我想用白话讲懂公钥和私钥
公钥和私钥这对东西很早就出现了, 其实想基本的弄懂它并不需要什么长篇大论,几句话就能说清楚的,所以我希望用一些简单易懂的话来帮助大家理解公钥和私钥。
公钥
公钥的作用通俗的来讲就是加密,比如你希望和 A 君之间的通信加密,这个时候你可以给 A 一个公钥,当 A 拿到公钥之后,之后 A 给你发的任何消息都能通过你给他的公钥来进行加密了,当你收到 A 的加密信息,那么你就可以通过你的私钥来进行解密看到明文了。
它的加密防止了在传输过程中的窃取。
私钥
私钥的作用除了用来解密公钥加密后的东西,还有个作用就是用来签名,签名的作用就是防止别人冒充自己发送消息,和你脑海里的签名的含义其实是差不多的,就是就像你签署一个文件,那只要签名后,别人要再冒充你发送消息就很困难了。
如何验证私钥签名的消息
还是上面那个例子,如果你想给 A 发送消息,那么你需要先将消息用 hash 算法产出一个 digest,即一个信息摘要,然后利用你的私钥将 digest 加密,现在要做的事情就是将信息加上 digest 给 A。
现在 A 拿到你传输的消息了,他会用你给的公钥来解密加密后的摘要,得到原始的摘要,然后 hash 原信息,将得到的结构跟 digest 进行对比,如果相等,那就是没有被修改伪造,这样就完成了签名的整个过程。
为什么要有 CA
CA 是一个值得信任的第三方机构,它的作用就是证明你给 A 的公钥真实有效。它的场景是