RSA算法明文长度介绍

RSA算法的明文长度与其密钥长度成正比,例如RSA 1024位最多加密117字节。填充(padding)如PKCS1Padding,用于确保数据安全,但也占据了明文长度。不同padding对输入数据长度有特定要求,如RSA_PKCS1_PADDING需要考虑11字节的padding。理解这些规则在进行RSA加密时至关重要。
摘要由CSDN通过智能技术生成

          RSA算法一次能加密的名文长度与密钥长度成正比,如RSA 1024实际可加密的明文长度最大是1024bits。如果小于这个长度怎么办?就需要进行数据补齐(padding),因为如果没有padding,用户则无法确分解密后内容的真实长度。字符串之类的内容问题还不大,以0作为结束符,但对二进制数据就很难理解,因为不确定后面的0是内容还是内容结束符。

          只要用到padding,那么就要占用实际的明文长度。于是才有117字节的说法,即下面这种常见的说法:len_in_byte(raw_data) = len_in_bit(key)/8 -11,如1024bit的密钥,一次能加密的内容长度为 1024/8 -11 = 117 byte。

          我们一般使用的padding标准有NoPPadding、OAEPPadding、PKCS1Padding等,其中PKCS#1建议的padding就占用了11个字节。对于RSA加密来讲,padding也是参与加密的,所以实际的明文只有117字节了。

          关于PKCS#1 padding规范可参考:RFC2313 chapter 8.1,我们在把明文送给RSA加密器前,要确认这个值是不是大于位长,也就是如果接近位长,那么需要先padding再分段加密。除非我们是“定长定量自己可控可理解”的加密不需要padding。

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值