什么是公钥 什么是私钥
孙子曰,知己知彼,百战不殆,从古至今,不管是战场还是商场,信息的保密都是非常重要的一个工作。
在对称加密的时代,加密和解密用的是同一个密钥,这个密钥既用于加密,又用于解密。这样做有一个明显的缺点,如果两个人之间传输文件,两个人都要知道密钥,如果是三个人呢,五个人呢?
那么多人知道的密钥,还叫密钥吗?
还好后来有了非对称加密,用一个密钥进行加密(公钥),用另一个密钥进行解密(私钥)。
那么什么是非对称加密呢?
在数学中,有些数学过程正向运算很容易,但是逆推却很难,比如说:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。这只是其中一个例子(RSA算法)
说人话就是:用私钥能计算出公钥,但是用公钥却算不出私钥(不能逆推)
发信人身份的验证:
文件的加密传输解决了,还有另一个问题,那就是发信人身份的验证,换句话说,你怎么知道对方不是钓鱼网站?
A将文件用哈希算法加密一次,生成摘要,再将摘要用私钥加密一次,生成数字签名。B收到A的文件之后,用自己的私钥进行解密,获得需要的文件,自己将文件生成一个摘要。
然后用A的公钥将A发过来的数字签名进行解密,也生成一个摘要。
如果两个摘要相同,那么就可以证明A是A并且信息在传递过程中没有被篡改。
是不是有点晕?下面我简化一下,说一下这个过程:
证明A是A:
A用自己的私钥将一个文件加密,然后B用A的公钥来验证,如果能解密,那么就证明A是A
A传文件给B:
A用B的公钥将要传输的文件加密,然后B用自己的私钥来解密,最终获得文件。
这下应该有一个感性的认识了吧?具体的算法其实我们不用了解的那么清楚,毕竟我们不是攻城狮,有个概念就可以了。