查看: 1120|回复: 0

[经验] RSA加密的填充方式

[复制链接]

该用户从未签到

发表于 2021-4-22 13:03:32 | 显示全部楼层 |阅读模式
分享到:
与对称加密算法DES,AES一样,RSA算法也是一个块加密算法( block cipher algorithm),其算法原理特点是总保持在一个固定长度的块上进行操作。但跟DES,AES等算法不同的是,RSA算法的block length与key length相关,每次加密的块长度就是key length。RSA加密算法目前有多种填充模式。当明文长度大于key length时,要进行切割分组,然后填充。处理后的每组数据长度也是固定不变的(与RSA密钥模长相等)。

H6G$}QTMM]3WZUO$G2[LS]V.png

RSA加密常用的填充模式有三种:RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_NO_PADDING。假设现有RSA算法密钥长度为1024bit,则三种填充模式的填充效果如下所述。


RSA_NO_PADDING填充模式
当用户选择RSA_NO_PADDING填充模式时,如果明文不够128字节,加密的时候会在明文前面填充若干数据0,直至达到128字节。

解密后的明文也会包括前面填充的零,用户需要注意把解密后的字段前向填充的零去掉,才是真正的明文。凌科芯安系列芯片支持RSA算法的芯片目前就是时钟这种填充方式。如果填充规则不符合要求,建议用户使用芯片加密前,先自行填充。



RSA_PKCS1_PADDING填充模式
当你选择RSA_PKCS1_PADDING填充模式时,如果明文不够128字节,加密的时候会在明文中随机填充一些数据,所以会导致对同样的明文每次加密后的结果都不一样。

对加密后的密文,用户使用相同的填充方式都能解密。解密后的明文也就是之前加密的明文。



EB = 00 || BT || PS || 00 || D ,其中D为消息

BT(The block type块类型):

BT=00 or 01 (私钥运算时)

BT=02 (公钥运算时)



PS(The padding string填充字符串):

BT=00,PS由00组成;

BT=01,PS由FF组成;

BT=02,PS由伪随机生成,且非零;

PS长度为Len(EB) - 3 - Len(D),最少是8字节。



RSA_PKCS1_OAEP_PADDING填充模式
RSA_PKCS1_OAEP_PADDING填充模式是PKCS#1推出的新填充方式,安全性最高,和前面RSA_PKCS1_PADDING的区别就是加密前的编码方式不一样。


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条



手机版|小黑屋|与非网

GMT+8, 2025-1-13 16:57 , Processed in 0.116930 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.