log tail 结果 今天 n) 都是 满足 detail
今天服务器端一哥们突然跑过来跟我说:我发现公钥每次加密都不同结果啊?
我说:怎么可能?不同的话,私要怎么解密和验证啊?
然后我屁颠屁颠的试了下,结果发现不论在在线 RSA 的还是自己公司 利用同一个明文加密,都会生成不同的秘文。 然后解密确是都能解出来。。。。
这个时候我就有点费解了 在自己的理解里面一般 RSA 不是:满足如下条件吗?
- )、密文 = 明文 ^ e mod n)、明文 = 密文 ^ d mod n)、那么publickKey = (e,
- n),
- privateKey = (d, n)
难道我真的记错了?
其实后来在网上查找了下 ,才发现其实这个算法是没错,只是我们的 RSA 在加密同一个数据过程中,加入了随机数处理(即加盐 - salt),这样就导致每次需要加密的明文都是不同的,那么显然密文就每次都不同了。 那么解密后怎么会是同一个呢? 答案很简单,那就是 客户端和服务器端同样解随机数。 具体如下方案:
- )、密文 = (random + 明文) ^ e mod n //publicKey 加密
- )、(random + 明文) = 密文 ^ d mod n // 服务器端利用privateKey 解密
- )、明文 = (random + 明文) - random //服务器端解码出random
- )、明文和数据库中数据比较
感觉这哥们的解释:http://blog.csdn.net/guyongqiangx/article/details/74930951
RSA 每次公钥加密不同结果
来源: http://www.bubuko.com/infodetail-2231361.html