2013-01-20 78 views
2

你好我使用的是JavaScript的RSA加密過程,它的工作:製作的Javascript RSA信息加密給予同樣的結果

<!DOCTYPE html> 
    <html lang="en"> 
      <head> 
      <title></title> 
       <script src="jquery-1.7.2.min.js" type="text/javascript"></script> 
       <script type="text/javascript" src="base64.js"></script> 
       <script type="text/javascript" src="asn1.js"></script> 
       <script type="text/javascript" src="jsbn.js"></script> 
       <script type="text/javascript" src="prng4.js"></script> 
       <script type="text/javascript" src="rng.js"></script> 
       <script type="text/javascript" src="rsa.js"></script> 
       <script type="text/javascript" src="pemconvert.js"></script> 
       <script> 
        function loadpubKey(){ 
          var pubkey = "-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAPBYvSszUjI5psKM958bHTDb+9NONv3X\nWVIGLR9/Al4j8/mqSDMhwFuu9oEyXl80+Ga2cohEQPpWyxzg3/tfGDUCAwEAAQ==\n-----END PUBLIC KEY-----"; 
          $("#publicKey").html(pubkey); 
         } 
        function RSAEncryptData() 
         { 
          var Message = $("#Message_to_Encrypt").val(); 
          var pubkey = pem_import($("#publicKey").val());    
          $("#RSAMessageEncrypted").html(pubkey.encrypt(Message)); 
         } 
      </script> 
      </head> 
     <body onload="loadpubKey();"> 
     <h1>RSA Encryption/Decryption using library From :https://github.com/tao-software/jsrsa</h1> 
     <form> 
       <strong>Public key   :</strong> <textarea rows="3" cols="100" id="publicKey"></textarea><br> 
       <strong>Message to RSA encrypt :</strong> <textarea rows="3" cols="100" id="Message_to_Encrypt"></textarea><br> 
       <input type="button" value="RSA Encrypt" onclick="RSAEncryptData();"> 
       <strong>RSA encrypted Message :</strong> <textarea rows="3" cols="100" id="RSAMessageEncrypted"></textarea><br> 
     </form> 
     </body> 
    </html> 

每次我打了「加密」使用相同的消息按鈕來加密我得到一個新的不同的加密值。我可以做些什麼來使這種加密爲所使用的相同消息提供相同的加密結果?

其實我想要做的是使用RSA加密一些公用密鑰的電話號碼,然後將它們存儲在一個表格中,然後我將加密任何電話號碼,我將通過一個過程使用相同的公鑰RSA並在表格中查看是否有匹配。

使用上面的腳本,即使我多次加密相同的電話號碼,我也不會找到匹配的,這就是爲什麼我想在加密相同電話號碼時結果相同。任何想法是受歡迎的。

預先感謝您。

+1

它應該每次都不一樣。出於安全考慮,這就是pkcs#1塊類型2填充所做的。爲什麼你想要它是一樣的? –

+0

嗨,感謝您的回覆,請使用相同的郵件進行加密時,請使用同樣的結果,因爲我希望能夠在以後的加密按摩之間進行比較(不必擔心這一點)聽說過它需要一個SALT或一個RSA 0填充,但我很困惑,我不知道如何讓它做我想做的事情。 – OussamaLord

回答

-1

聽起來像你想要標誌一個消息與您的私鑰,並有其他驗證簽名與您的公鑰。您鏈接的庫提供RSASign和RSAVerify方法,可能位於RSAKey實例的signverify方法下。我不是一個JS程序員,所以我只能說這就是它的樣子。

+1

您好,實際上我想要做的是使用RSA使用公鑰加密某些電話號碼,然後將它們存儲在表格中,之後我將加密任何電話號碼,我將通過RSA中的相同公鑰並查看錶中是否有匹配。使用上面的腳本,我永遠不會找到匹配,即使我多次加密相同的電話號碼,這就是爲什麼我想在加密相同電話號碼時結果相同。我希望我很清楚,謝謝任何可以提供幫助的想法。 – OussamaLord

+0

@ user1789193:您應該編輯您的問題以將該信息添加到該問題。 –

0

正如Greg在his comment中所述,PKCS#1填充中的隨機性會導致您的加密結果每次都會發生變化。

根據您的使用案例,我建議您在加密的數據旁邊存儲電話號碼的散列。然後,您可以根據散列執行快速查找。您可能希望在哈希之前對您的電話號碼加鹽。

請記住,哈希不保證是唯一的,所以有一個小小的機會會得到兩個相沖突的哈希值。

+0

嗨,我只是想知道是否有辦法讓這個PKCS#1填充不會生成用於加密的隨機值,並且您認爲散列2個不同的RSA加密結果會給出相同的哈希值嗎?我不這麼認爲。謝謝。 – OussamaLord

+0

隨機性有一個很好的理由,不要試圖去除它。我建議你散列未加密的電話號碼,這將始終產生相同的結果。 –

+0

「隨機性有一個很好的原因,不要試圖刪除它」hhhh請我發佈這個問題,因爲我需要它給出相同的結果,我需要修改它,你不理解和抱歉。我不能使用哈希,因爲它不可逆並且想要使用相應的私鑰解密電話號碼(找到匹配之後)(我有一個爲此設置的進程)。 – OussamaLord