具有特定填充的RSA最大消息长度

kwa*_*tuM 3 java encryption cryptography rsa aes

我正在尝试在我的Java应用程序中实现一些加密.加密应该如下工作:

  1. 生成随机n位AES密钥
  2. 使用RSA公钥加密AES密钥
  3. 将加密的AES密钥发送到服务器
  4. 使用AES密钥加密数据+发送到服务器

我无法确定要使用的填充算法.我读的OAEPWithSHA-1AndMGF1Padding是一个不错的选择,但是我可以加密的最大消息长度是多少?

我需要知道使用RSA加密我的AES密钥的确切最大字节数OAEPWithSHA-1AndMGF1Padding.

RSA密钥的长度也有所不同.我可能会去2048位.

TL; DR:我可以使用2048位RSA密钥加密多少字节OAEPWithSHA-1AndMGF1Padding

Ebb*_*sen 6

您所描述的内容称为混合加密,是获得对称密钥加密系统速度的常用方法,结合RSA的两个密钥的优点.

至于细节:

2048位RSA密钥允许256个字节,其中OAEP填充占用42个字节,为加密数据留下大约214个字节.AES-256密钥长度为256位(32字节),因此有足够的空间.