javax.crypto.IllegalBlockSizeException

Lal*_*and 7 java cryptography

javax.crypto.IllegalBlockSizeException:数据不得超过53个字节我知道这是因为RSA算法只能加密具有RSA密钥长度的最大字节长度的数据,以8位减去11个填充字节为单位,即最大字节数=密钥长度(位/ 8 - 11).

这里使用512密钥大小,所以它不允许超过53.但我需要保持512位密钥,但加密超过53字节有任何可能性.

MBy*_*ByD 7

是的,不是.您无法使用RSA进行加密,但您可以使用以下方法之一:

  1. 通常使用对称算法加密并传递使用RSA加密的密钥.例如,要将数据D发送给具有公钥PK的另一个人:

    1. 发送Ek(D)(用密钥K的对称算法加密D)
    2. 同时发送Epk(K)(使用RSA RSA加密的K)

    另一方打开PK(K)得到K,打开K(D)得到D.

  2. 将数据拆分成小块并分别加密每个数据.

第一种方法是更好的方法,主要有两个原因:

  1. 你不要乱用数据(加密本身除外).
  2. 对称加密/解密比公共加密快得多,例如,RC4是数据的简单异或,而RSA使用大功率.

(3.必须有一个原因,为什么PGP如此常见......)