正文
我们在出门时,匆忙中难免会忘记带东西,这时候一定要记住四个字——伸手要钱,这里的“要”就指的是钥匙,非常重要的。只有配套的钥匙才能打开配套的锁,你的钥匙打不开别人的锁,别人的钥匙也打不开你的锁。数据的加密解密就像门锁一样,只有相应的密钥才能解开对应密钥加密的信息。作为开发者,我们需要对用户的信息负责,保护用户的数据安全。
所谓非对称加密是指一对加密密钥与解密密钥,这两个密钥数学相关。使用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。
因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密信息。即称公开的密钥为公钥,不公开的密钥为私钥。
公钥与私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。
公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
总结:
公钥和私钥是成对的,它们互相解密。
公钥加密,私钥解密。
私钥数字签名,公钥验证。
鲍勃有两把钥匙,一把公钥,一把私钥。
鲍勃分别给了他的三个朋友(帕蒂、道格、苏珊)每人一把公钥。
苏珊要给鲍勃写一封信(偷偷地,不能让别人知道)。
她写完后用鲍勃的公钥加密,就达到了保密的效果。
鲍勃收信后,用自己的私钥解密,就看到了信件内容。
注意!只要鲍勃的私钥不泄露,这封信就是安全的。
即使落在别人手里,也无法解密,就不会看到信件的内容。
鲍勃想要给苏珊回信,决定采用"数字签名"。
他写完后先对信件使用Hash函数,生成了信件的摘要(digest)。
随后,鲍勃使用自己的私钥,对这个摘要加密,生成了"数字签名"(signature)。
鲍勃将这个数字签名,附在信件下面,一起发给了苏珊。
苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到了信件的摘要。
由此证明,这封信确实是鲍勃发出的。
苏珊再对信件使用Hash函数,将得到的结果与上一步得到的摘要进行对比。
如果两者一致,就证明这封信未被修改过。
道格出现了。
如果道格偷
偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。
这样,他就可以冒充鲍勃,写信给苏珊。
后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。
她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。
证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
鲍勃拿到数字证书以后,就可以放心了。
以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。