2016-09-25 84 views
3

我试图在我的Java应用程序中实现一些加密。 加密应该工作如下:具有特定填充的RSA最大消息长度

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

我很难决定使用什么样的填充算法。我读OAEPWithSHA-1AndMGF1Padding是一个不错的选择,但是我可以用这个加密的最大消息长度是多少?

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

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

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

回答

6

您所描述的内容被称为Hybrid Encryption,它是获得对称密钥加密系统的速度以及RSA两个密钥的优点的常用方法。

至于细节:

2048位RSA密钥允许其中的OAEP填充需要42个字节,留下用于加密数据214周围字节256个字节。 AES-256密钥长度为256位(32字节),因此它有足够的空间。

+1

AES还支持128位和192位的密钥大小。 – zaph

+0

那么带有SHA1和MGF1的OAEP需要42个字节?如果我使用SHA256和MGF1使用OAEP,不需要使用更多的字节吗? – kwantuM

+0

是否有任何文件检查这些算法使用的字节?或者也许是一个公式? – kwantuM