RSA 每次公钥加密不同结果

    今天服务器端一哥们突然跑过来跟我说:我发现公钥每次加密都不同结果啊?

    我说:怎么可能?不同的话,私要怎么解密和验证啊?

    然后我屁颠屁颠的试了下,结果发现不论在在线RSA的还是自己公司 利用同一个明文加密,都会生成不同的秘文。   然后解密确是都能解出来。。。。

  这个时候我就有点费解了 在自己的理解里面一般RSA不是:满足如下条件吗?

  1)、密文 = 明文^e mod n
  2)、明文 = 密文^d mod n
  3)、那么 publickKey = (e,n),privateKey = (d,n)

    难道我真的记错了?

   其实后来在网上查找了下 ,才发现其实这个算法是没错,只是我们的RSA在加密同一个数据过程中,加入了随机数处理(即加盐-salt),这样就导致每次需要加密的明文都是不同的,那么显然密文就每次都不同了。  那么解密后怎么会是同一个呢? 答案很简单,那就是 客户端和服务器端同样解随机数。 具体如下方案:

 1)、 密文 =( random+明文) ^e mod n  //publicKey  加密
 2)、(random+明文) = 密文^d mod n // 服务器端利用privateKey 解密
3)、 明文 = (random+明文) - random //服务器端解码出random 4)、 明文和数据库中数据比较

 

 

感觉这哥们的解释:http://blog.csdn.net/guyongqiangx/article/details/74930951

转载于:https://www.cnblogs.com/kingbo/p/7247494.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值