2012-04-09 99 views
2

我想加密我用RSA encrytion加密的數據。但是,當我通過使用另一個公鑰加密加密的數據。錯誤是「未指定的錯誤」加密的加密數據

我認爲這個問題的關鍵尺寸。

我的密鑰大小爲1024位。

簡短的源代碼:

  1. 第一步:使用RSA公鑰與密鑰大小1024位數據加密

    byte[] encryptedData = RSAalg.Encrypt(dataToEncrypt, false); 
    
  2. 第二步:通過與其他RSA公鑰加密數據密鑰大小1024位或者

    byte[] encryptedData1 = RSAalg1.Encrypt(encryptedData, false); 
    

第二步顯示錯誤。我怎樣才能解決這個問題?

+0

這是什麼語言? – anuragsn7 2012-04-09 11:36:09

回答

0

由於填充您無法加密與1024位的密鑰數據的1024位(這是encryptedData應該是什麼)。

如果您使用的是.NET和C#,那麼使用false進行加密意味着您使用PKCS#1填充(從內存中)可以加密117個字節(而不是128個字節)。

注意:您不應該迭代第二次加密以獲得結果 - 但您應該問自己爲什麼要使用兩個密鑰(具有相同密鑰長度)加密此數據兩次。如果你想要更多的安全性,那麼你應該使用更大的密鑰(一次)。 OTOH如果你想要多個密鑰解密數據,那麼你需要一個不同的策略。

+0

我想通過使用兩個不同的人使用兩個鍵來進行安全的電子投票....這使我可以確保數據不會解密,除非兩個鍵解密數據..... – Amin 2012-04-09 18:05:46

+0

我想做一個通過使用兩個不同的密鑰來保證電子投票......這使我可以確保數據不會被解密,除非存在兩個密鑰...... 當第一個加密數據已經通過使用第一個密鑰完成時。會通過使用第二密鑰來加密的第一步 請諮詢再進行第二次加密。 – Amin 2012-04-09 18:20:52

+0

這不是一個新問題,您可以通過Google搜索找到關於此的很多文獻**。一種方法是使用隨機對稱密鑰(例如256位AES)和具有RSA-1的前一半(128位)和具有RSA-2的後一半(128位)來加密數據。 – poupou 2012-04-09 18:27:50