java RSA具有特定填充的最大消息长度
我试图在我的Java应用程序中实现一些加密。 加密的工作原理如下:
- 生成随机n位AES密钥
- 使用RSA公钥加密AES密钥
- 将加密的AES密钥发送到服务器
- 使用AES密钥加密数据并发送到服务器
我很难决定使用什么填充算法。我读到OAEPWithSHA-1AndMGF1Padding
是一个不错的选择,但是我可以用它加密的最大消息长度是多少
我需要知道我的AES密钥可以用RSA加密的最大字节数
RSA密钥的长度也会有所不同。我可能会选择2048位
TL;DR:使用带有OAEPWithSHA-1AndMGF1Padding
的2048位RSA密钥可以加密多少字节
# 1 楼答案
你所描述的被称为Hybrid Encryption,这是一种获得对称密钥加密系统速度的常用方法,结合了RSA两个密钥的优点
至于细节:
2048位RSA密钥允许使用256个字节,其中OAEP填充占用42个字节,剩下约214个字节用于加密数据。AES-256密钥的长度为256位(32字节),因此有足够的空间