2013-04-03 28 views
1

密鑰大小爲1024的RSA加密系統的大小限制爲117字節,可用於加密。這是爲了加密對象。任何人都可以建議一種替代解決方案在java中替代RSA加密

+0

[AES](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard) –

回答

1

使用像AES這樣的對稱算法對對象進行加密,然後使用RSA對用於加密對象的密鑰進行加密。這將爲您提供RSA /公鑰加密的好處,但是可以自由加密比RSA密鑰的大小更多的數據。

什麼它的價值,這是這類計劃的大多數公共密鑰加密協議使用(如PGP/GPG)

1

通常一個加密和認證使用對稱密碼,如TripleDes的,AES,或批量數據茶花。既然你想確保數據沒有被篡改,如果可能的話,選擇一種像GCM或EAX等模式的模式,如CBC(與單獨的認證原語配對)。然後使用公鑰/私鑰對加密對稱密鑰。

您可以將較大的消息分解爲較小的消息,然後加密較小的消息。在這種情況下,您在ECB模式下操作非對稱密碼(RSA)(如果我正確記得)。 Handbook of Applied Cryptography (HAC)警告這種做法。

此外,沒有太多細節,嘗試匹配安全級別。所以如果你使用AES-128,那麼使用3072位的RSA模量。作爲對比,許多人認爲沒有必要這樣做。

0

由於1024是位數,所以您正在進入該限制。將它除以8,然後得到128.然後從中減去11,因爲PKCS#1填充正在使用,並且您得到的編號爲-117。

無論如何,正如其他人已經注意到的,通常做的是您隨機加密生成對稱密鑰,然後使用它來加密/解密內容。