公钥与私钥用于加解密和签名
公钥:公开持有,每个人都可以获得。
私钥:个人持有,需要保密不能泄露。
公钥加密,私钥解密
信息从公钥持有者中的某一个向私钥持有者发送。
加解密是为了让通信的第三方无法获取消息内容。
私钥签名,公钥验签
信息从私钥持有者向公钥持有者中的某一个发送。
签名是为了证明消息发送者的身份合法,即是“我”本人而不是其他人冒充我发送的消息。(但这个消息可能是公开的,如果希望加密发送,则需要另外一对儿公钥和私钥反方向持有,完成加解密过程)
私钥和公钥是一对,谁都可以加解密,只是谁加密谁解密是看情景来用的:
第一种情景是签名,使用私钥加密,公钥解密,用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改.但是不用来保证内容不被他人获得。
第二种情景是加密,用公钥加密,私钥解密,用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得。
比如加密情景:
如果甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据.最后再发给乙,这样确保了内容即不会被读取,也不会被篡改。
英文版: http://www.youdzone.com/signature.html
中文版: http://www.blogjava.net/yxhxj2006/archive/2012/10/15/389547.html
https://www.zhihu.com/question/25912483