博客专栏

EEPW首页 > 博客 > RSA算法明文长度介绍

RSA算法明文长度介绍

发布人:hanini 时间:2021-11-18 来源:工程师 发布文章


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。

各种 padding 对输入数据长度的要求:  

私钥加密:  

RSA_PKCS1_PADDING         RSA_size-11  

RSA_NO_PADDING              RSA_size-0  

RSA_X931_PADDING            RSA_size-2  

公钥加密  

RSA_PKCS1_PADDING        RSA_size-11  

RSA_SSLV23_PADDING        RSA_size-11  

RSA_X931_PADDING           RSA_size-2  

RSA_NO_PADDING               RSA_size-0  

RSA_PKCS1_OAEP_PADDING      RSA_size-2 * SHA_DIGEST_LENGTH-2 

 


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。




相关推荐

技术专区

关闭