找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1072|回复: 0
打印 上一主题 下一主题
收起左侧

RSA算法明文长度介绍

 关闭 [复制链接]
跳转到指定楼层
楼主
ID:349277 发表于 2021-11-17 11:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表