看RSA加解密源码有感
目录
注意
本文最后更新于 2022-04-16,文中内容可能已过时。
看了下python对于RSA算法的实现,不由得感叹,用算法解决的问题的强大在于复杂理论的支撑。在工程上的实现反而极为简单。
|
|
加密: 对明文数字乘ekey次方再模上n得到密文数字。
解密: 对密文数字乘dkey次方再模上n得到明文数字。
若想要破解: n是公开的。未知的是明文数字和dkey。由于存在两个未知数,在不知道dkey的情况下求解不出正确的明文数字。 ekey和dkey两个数字就是一对公私钥。
首先要明确一点,私钥加密的数据,公钥能解密。公钥加密的数据,私钥可以解密。原理就是如上所说的数学原理。但是要根据使用场景按照规则来玩。
- 加密数据场景
公钥
加密,私钥
解密。公钥是公开的,私钥是保密的。在这种场景下,私钥不能用来加密数据,否则别人使用公开的公钥,是可以解密数据的。如果要互相加密通讯,保证数据安全性,则双方需要持有对方的公钥。
- 验证签名场景
私钥
加密,公钥
解密。即私钥对明文内容做签名,然后把签名结果,内容和公钥一起公布出去。公钥可以解密私钥加密的东西,进而能验证内容是否和签名解密出来的是否是否一致。这里利用了私钥的私有性。也叫数字信封。证实了内容确实是由私钥的持有人发出的。这种场景不能保证数据的安全性,因为内容已经明文公布。
结合这两种场景,在实际运用中就是先 签名
后 加密
。