san*_*ity 16 java encryption cryptography
通常,建议使用RSA加密对称密钥,然后将其用于加密"有效负载".
对于可以使用RSA加密的数据量的实际(或理论)限制是什么(我使用的是2048位RSA密钥大小).
特别是,我想知道使用(不同的)RSA公钥加密RSA公钥(256字节)是否安全?我正在使用Java中的Bouncy Castle加密库.
Tho*_*nin 16
对于n位RSA密钥,直接加密(使用PKCS#1 "旧式"填充)适用于高达楼层(n/8)-11字节的任意二进制消息.换句话说,对于1024位RSA密钥(128字节),最多117个字节.使用OAEP(PKCS#1"新式"填充),这有点少:OAEP使用输出长度为h位的散列函数; 这意味着楼层的大小限制(n/8)-2*ceil(h/8)-2:仍然是1024位RSA密钥,SHA-256作为散列函数(h = 256),这意味着二进制消息最多60个字节.
使用另一个RSA密钥加密RSA密钥没有问题(使用RSA 加密任何字节序列都没有问题,无论这些字节代表什么),当然,"外部"RSA密钥必须更大:使用旧式填充,要加密256字节的消息,您将需要一个模数至少为2136位的RSA密钥.
混合模式(使用随机对称密钥加密数据并使用RSA加密该对称密钥)仍然被推荐为一般情况,只是因为它们没有任何实际大小限制,并且还因为它们更容易替换RSA部分与另一个密钥交换算法(例如Diffie-Hellman).
| 归档时间: |
|
| 查看次数: |
15428 次 |
| 最近记录: |