RSA加密为什么每次加密的结果不一样

JAVA写RSA加密,私钥都是一样的,公钥每次加密的结果不一样跟对数据的padding(填充)有关

1、Padding (填充)属性定义元素边框与元素内容之间的空间。
2、padding 简写属性在一个声明中设置所有内边距属性。设置所有当前或者指定元素内边距属性。该属性可以有1到4个值。
3、当元素的 Padding(填充)(内边距)被清除时,所"释放"的区域将会受到元素背景颜色的填充。
4、单独使用填充属性是在一个声明中设置元素的所内边距属性。缩写填充属性也可以使用,一旦改变一个数值,则padding对应的距离都会改变。

为什么需要Padding?
严格地说RSA也是一种“块”加密/解密。加密前输入长度必须与“模”相同:不足需要补足(Padding);输入长度大于“模”长度,则需要“分组”,最后一组同样需要Padding。
比如这里,Modulus(N)为256位,即0x20 bytes。输入为"1"(0x31),还需要“补足”0x1F字节才能用公式 C=M^E MOD N 进行计算。
“补足”可以自己定义,但加密和解密必须遵守相同的Padding“协议”,否则就会解密不出原文。其中一种符合工业标准的Padding规范为PKCS1.5:

更加详解:
https://blog.csdn.net/guyongqiangx/article/details/74930951
RSA不得不考虑到的那些事儿
https://blog.csdn.net/defonds/article/details/42775183

猜你喜欢

转载自blog.csdn.net/heqiang2015/article/details/83586937
今日推荐