javax.crypto.IllegalBlockSizeException:数据不得超过53个字节 我知道这是因为RSA算法只能加密具有最大字节长度RSA密钥长度的数据,以8位减去11位填充的比特 字节,即最大字节数=密钥长度,以比特/ 8 - 11。
这里使用512密钥大小,因此它不允许超过53.但我需要保持512位密钥,但加密超过53字节是否有可能。
答案 0 :(得分:7)
是和否。您无法使用RSA进行加密,但您可以使用以下方法之一:
使用对称算法加密并传递使用RSA加密的密钥的常用方法。例如,要将数据D发送给具有公钥PK的另一个人:
另一方打开PK(K)获得K,打开K(D)获得D.
将数据拆分成小块并分别加密。
第一种方法是更好的方法,主要有两个原因:
(3。必须有一个原因,为什么PGP如此常见......)
答案 1 :(得分:1)
你为什么不雇用包围?生成对称密钥(AES),使用该AES密钥加密数据,然后使用公共RSA密钥加密AES密钥。发送加密数据以及加密的AES密钥。然后使用私有RSA密钥解密AES密钥,并使用它来解密其余数据。这将允许您加密任何大小的数据。