2014-09-04 168 views
1

我一直在處理我的expressjs項目,但現在我已經陷入了死衚衕。我需要加密一個具有特定模數和指數的字符串。我應該提到我對密碼學的瞭解不多。使用RSA公鑰加密字符串

因此,例如,我有這些:

var mod = "99F496606F25ABC3FB26D21D58B1B9D7714B016E870B57EB3220DD60B55796A2E6A3CE65C59CCAD42AE8DCBD475125BF031DA2A66DAE0C5CBF5E5C445B89FE13C879D519FC9603C337226D23E230C986D6E057214A309BF7B954C899FF920690A8558056D95E69F932CF1BDAA55E90D871040C614D7CDB496741E16B8728F6E5B3CE9A39D76F0BF1E5CF244DC4B88117B4F45A48C103CEE5CCEE3E227B0C1D6DDB24E9FC140A05A4C6E094CA0D9512379964B0C1000F9E94F7071BE7F0B04178FE6B60222FA4896D5D7F4AECE29D83AD1167A0AE023C1B9F29265B290E695913D83E965335364014BB227284A6D2A825CE4A3D839431546CA6BEA98691E53CE9"; 
var exponent = "010001"; 

如果我理解正確的話我現在需要創建與此公鑰?我查找了很多用於rsa加密的nodejs模塊,但他們似乎都需要密鑰才能以PEM格式。所以,我發現這個thread,並用它這樣的:

rsaPublicKeyPem(new Buffer(mod).toString('base64'), new Buffer(exponent).toString('base64')); 

這給了我這樣的:

-----BEGIN RSA PUBLIC KEY----- 
MIICDAKCAgA5OUY0OTY2MDZGMjVBQkMzRkIyNkQyMUQ1OEIxQjlENzcxNEIwMTZF 
ODcwQjU3RUIzMjIwREQ2MEI1NTc5NkEyRTZBM0NFNjVDNTlDQ0FENDJBRThEQ0JE 
NDc1MTI1QkYwMzFEQTJBNjZEQUUwQzVDQkY1RTVDNDQ1Qjg5RkUxM0M4NzlENTE5 
RkM5NjAzQzMzNzIyNkQyM0UyMzBDOTg2RDZFMDU3MjE0QTMwOUJGN0I5NTRDODk5 
RkY5MjA2OTBBODU1ODA1NkQ5NUU2OUY5MzJDRjFCREFBNTVFOTBEODcxMDQwQzYx 
NEQ3Q0RCNDk2NzQxRTE2Qjg3MjhGNkU1QjNDRTlBMzlENzZGMEJGMUU1Q0YyNDRE 
QzRCODgxMTdCNEY0NUE0OEMxMDNDRUU1Q0NFRTNFMjI3QjBDMUQ2RERCMjRFOUZD 
nMTQwQTA1QTRDNkUwOTRDQTBEOTUxMjM3OTk2NEIwQzEwMDBGOUU5NEY3MDcxQkU3 
RjBCMDQxNzhGRTZCNjAyMjJGQTQ4OTZENUQ3RjRBRUNFMjlEODNBRDExNjdBMEFF 
MDIzQzFCOUYyOTI2NUIyOTBFNjk1OTEzRDgzRTk2NTMzNTM2NDAxNEJCMjI3Mjg0 
QTZEMkE4MjVDRTRBM0Q4Mzk0MzE1NDZDQTZCRUE5ODY5MUU1M0NFOQIGMDEwMDAx 
-----END RSA PUBLIC KEY----- 

然後我試圖與ursa library

var key = ursa.createPublicKey(pem); 

使用,但它說,它不是公鑰。我也嘗試使用它與node-rsa,但得到幾乎相同的錯誤:/

任何想法,我在這裏做錯了或替代方法?

謝謝,真的很感激!

+2

請始終包含完整的錯誤消息,我不認爲它實際上與您說話? – 2014-09-04 19:54:58

回答

0

PEM格式是DER格式的Base64編碼版本。您可以使用OpenSSL幫助您構建DER,然後輸出PEM。我給this answer另一個問題,它有一些Ruby代碼輸出一個PEM格式的文​​件,只給出模數和指數。這應該引導您找到解決方案。