2013-01-14 372 views
1

你好,我有這樣的腳本,我在Javascript中設置:的Javascript RSA解密私鑰

<!DOCTYPE html> 
    <html lang="en"> 
      <head> 
      <script src="jquery-1.7.2.min.js" type="text/javascript"></script> 
      <script language="JavaScript" type="text/javascript" src="jsbn.js"></script> 
      <script language="JavaScript" type="text/javascript" src="rsa.js"></script> 
      <script language="JavaScript"> 

       function encryptData(){ 
        var pem ="-----BEGIN PUBLIC KEY-----\ 
        MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+tii3IwzHa4i142kAB0dRVXoXA2Q8oF48UgMA\ 
        AV54+JDED5iVyJK1s7J/xGi4U3+9sRoraE7bS19Nihs5DuYa0gsbKs/5jXOtKiw94fAtMyJTcX0d\ 
        SzZhJKcX9vEzI27Hdu1rNFY64Ixz3KjrG1N/pXHtwjE1Ira5XZdTezx0wwIDAQAB\ 
        -----END PUBLIC KEY-----"; 
        var key = RSA.getPublicKey(pem); 
        var message = "some text to RSA encrypt"; 
        var encryptedMessage = RSA.encrypt(message, key); 
        $('#RSAMessageEncrypted').html(encryptedMessage); 
       } 
      </script> 
      </head> 
     <body onload=encryptData();> 
     <form> 
      <strong>RSA encrypted Message :</strong> <textarea rows="10" cols="100" id="RSAMessageEncrypted"></textarea><br> 
     </form> 
     </body> 
    </html> 

我的文字區域充滿使用上述公鑰我的消息中RSA加密。

加密的消息是:

oH1JVWIT7MOH4ObCjFlBuFcAUvooSZANMokFy5jApSi8n0ABVc9vwXP2EFl2x5+UColU6s2VAU+RsZPV4ZgZu3+GhN9pDUb1ZMVyYRECDy/7h+mE+UdDZTPwP1TAcBrspL/XM6+q6mJfUWbEKfR/2vyNUhBxpt6QOhVaI29aHfU= 

我的問題如下:我如何才能解密用私鑰對,這個公鑰是來源於我的信息?有解密庫嗎?

我的私鑰是:

所有的
-----BEGIN RSA PRIVATE KEY----- 
MIICXQIBAAKBgQC+tii3IwzHa4i142kAB0dRVXoXA2Q8oF48UgMAAV54+JDED5iVyJK1s7J/xGi4 
U3+9sRoraE7bS19Nihs5DuYa0gsbKs/5jXOtKiw94fAtMyJTcX0dSzZhJKcX9vEzI27Hdu1rNFY6 
4Ixz3KjrG1N/pXHtwjE1Ira5XZdTezx0wwIDAQABAoGBAJY4Gd4XZ6t1Epxi4oQ5N33jXGXgMAZp 
M5FD8EUCzw1ujWlB96iT8qvZPdLSPMJkUwxyAfELGoI13n3POR46lBhRpYKkTZm1UmEBscdO2B9w 
B7YUM9caJG4TgWBKxD8KLriQANnXZrv9zNGx4Cs0USeQgWuDfgkBF+PvL5AVq+jRAkEA+O0MNvBM 
kGtGCLt/V34jiivGs9HtXKSJY6vI60GYZYB7D3SniYVUsMocC+O3vyqdpMiO/szfLTAWdXB2yl3Q 
VwJBAMQhmQkT57rJ07SS40t1HGonryrmGF3BcHw9sVCijZF/jrbKeL5XmhnbCr9Lhy/InepcSRFI 
Pqzj32w0timLi3UCQCVsliKIXCp2RlA3yDxiNXunezc7v4DnJ9S5VfqwoPXZrCa1th6B0irGKBNN 
iCmQgaTtljoOmRsVGLtNTj68ff8CQGeiLR/b0bUkEeY3OzzS27nH0EoFnNhlbw9m9btauR0pXnp9 
j8FbvoRs9kfQG9WG1tJQAxfLqbpnCdY+IAbhwkUCQQDOIrm78sSuVL+U6f98P2eDSzhKgnepEEVJ 
u5iBs3lT5T+p+Xov6DPLd13Pm7Lyppj8S7pW/1CwkTVwW+U3O2kj 
-----END RSA PRIVATE KEY----- 
+0

您使用的rsa模塊僅用於加密;還需要執行解密['rsa2.js'](http://www-cs-students.stanford.edu/~tjw/jsbn/rsa2.js)和['jsbn2.js'](http:// www-cs-students.stanford.edu/~tjw/jsbn/jsbn2.js) –

+0

你好,謝謝你的答案,你可以告訴我如何使用jsbn2.js和rsa2.js請我試過,但沒有RSA.getPrivateKey(pem )讀取密鑰或RSA.decrypt()。謝謝。 – user1818439

+0

我想我有同樣的問題:我們應該讀取功能「RSASetPrivate(N,E,D)」的私鑰,然後使用函數「RSADecrypt(ctext)」解碼整個。但似乎沒有辦法簡單地讀取私鑰,就像我們直接使用openssl進行操作一樣,例如「openssl rsautl -decrypt -inkey private.key」。 – plang

回答

6

首先,我希望這不是你要在生產中使用的RSA私鑰。

關於在JavaScript端進行加密/解密,有各種庫,例如Standford's JSBN RSA Encryption libraryohdave.com's RSA in JavaScript utility用於簡單的加密/解密,但是您對這些工具乃至架構的主要關注點是性能。我不會用JavaScript來進行RSA加密,除非它是絕對必要的,並且沒有其他解決方法。