"); //-->
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
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
相关推荐
混沌加密技术技术详解和设计实现
量子时代怎么保证数据安全?美国公布四项备选加密算法
量子纠缠的矛与盾-量子计算机可否破解量子加密信息
Chiptorials ——使用ATECC608 TrustFLEX实现基本非对称身份验证
打造一个基于单片机的“USB“密钥
用AVR汇编语言实现AES及其优化
利用ECC608 TrustMANAGER和Kudelski IoT的keySTREAM SaaS进行现场凭证配置
DES算法的介绍和实现(上).
利用汇编语言实现DES加密算法
基于嵌入式ARM平台的可信计算的实现
关于卡的常见问题解答
关于加密芯片的那些事儿
DES算法的介绍和实现(下)
MCU 破解技术分析
加密算法之MD5算法
Chiptorials——如何使用ATECC608 TrustFLEX实现公钥轮换
一种新能源租赁车防盗系统控制方案
[分享]蓝牙的信息安全机制及密钥算法改进(ZT)
物联网的密码资产保护
Chiptorials ——如何将CryptoAuthLib库用于Microchip安全身份验证IC
SRAM 有人使用SRAM保存密钥么
无线网络安全技术规范
[分享]DES加密算法源程序 --zt
意法半导体推出后量子密码加密解决方案,为嵌入式系统带来量子攻击防御能力