2013-12-09 83 views
2

我想加密/解密一些長文本與RSA公鑰/私鑰加密使用cryptopp。我發現了很多例子,包括http://www.cryptopp.com/wiki/RSA的官員,但所有的例子都有一個問題:加密++ RSA公鑰加密與長明文

他們只允許我加密比密鑰大小稍短的數據。

所以問題是:我真的必須分割數據和加密塊來阻止自己,還是crypto ++已經提供了一些函數來處理這個問題(如AES加密的GCM或CFB模式)?

感謝名單

回答

4

一般來說,你不應該使用加密RSA大明文。您可以使用ECB加密模式使用RSA-OAEP,但速度極其緩慢,與較常見的混合加密模式無關。

在混合加密模式下,您只需使用安全隨機數生成器即可生成對稱數據密鑰。通常AES-128位將足夠強大。然後你用這個密鑰加密明文,例如在CBC模式下使用AES;你可以使用zero-IV和PKCS#7填充。最後你使用RSA-OAEP加密AES密鑰;如果無法使用OAEP,請使用PKCS#1 v1.5填充。

反過來很明顯,解密AES密鑰,解密密文。

請注意,您需要至少11個字節的填充開銷(而不僅僅是1位)從密鑰大小中減去以使用PKCS#1 v1.5中的RSA進行加密。填充是RSA安全性的一部分。


您可以通過簽署然後加密數據來添加完整性保護。您可以按照您的建議使用AES-GCM,但請注意,攻擊者仍然可以加密任何數據並將其發送給接收器。所以AES-GCM只會提供有限的完整性保護。

+0

對不起,在我的描述中使用了錯誤的詞語,我實際上是在嘗試使用RSA-OAEP。但是你的建議只對AES密鑰進行加密,thanx – Hellagot