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

RSA maximum message length with specific padding

我正在尝试在我的 Java 应用程序中实施一些加密。 加密应按如下方式工作:

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

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

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

RSA 密钥的长度也有所不同。我可能会选择 2048 位。

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

您所描述的被称为 Hybrid Encryption,它是获得对称密钥加密系统速度并结合 RSA 两个密钥优势的常用方法。

具体情况:

一个 2048 位的 RSA 密钥允许 256 个字节,其中 OAEP 填充占用 42 个字节,剩下大约 214 个字节用于加密数据。 AES-256 密钥的长度为 256 位(32 字节),因此有很多 space。