2012-08-14 41 views
1

我正在加密數據傳輸的問題,我們得到一個「損壞的墊塊」解密約200失敗的故障。該方案與加密電子郵件非常相似(並且設計用於相當大量的數據:每個單元最多1GB):隨機損壞的墊塊與bouncycastle

  1. 生成隨機256字節用作會話密鑰。
  2. 使用接收者的公開密鑰加密會話密鑰
  3. 使用會話密鑰作爲AES的關鍵參數,使用CBC AES PKCS#7填充數據進行加密。

接收器將然後

  1. 解密使用自己的私鑰對會話密鑰。
  2. 使用會話密鑰解密數據。

現在,平均約有200倍,隨機字節將導致數據不可解密:在解密結束時,我們得到「填充塊損壞」。相同的字節序列將始終工作或始終導致失敗。似乎要加密的數據內容沒有任何區別(但我仍然在此區域留下一些測試)。

有關如何避免失敗的建議?

+3

我們也有類似的隨機出現的「墊塊損壞」和問題,據我的記憶,是由開始生成的密鑰引起的引導解密過程丟棄的零。你的情況*可能*相似。 – 2012-08-14 18:28:15

+0

好的建議。謝謝。我會找到一些失敗的鑰匙,並看看。 – eirikma 2012-08-14 19:23:52

+0

是的,檢查IV,如果你有任何問題,並確保你的編碼是正確的。最後,確保您收到*全部*數據。 – 2012-08-14 23:13:24

回答

1

是的,Victor Sorokin是對的。會話密鑰中的前導零被刪除。

RSA加密是一個純粹的數學函數,它將刪除任何前導零。當會話密鑰被解密時,必須重新填入前導零,以便密鑰獲得原始長度和值。有填充方案可用,但必須在雙方都使用。

的BouncyCastle的常見問題增加了一些細節,請參見問題4號位置: http://www.bouncycastle.org/wiki/display/JA1/Frequently+Asked+Questions

+0

在我的公司發現此信用不是我的,因此可以接受此答案=) – 2012-08-15 13:15:24