❶ 什么是公钥加密和私钥解密
如果只是单方面采用非对称性加密算法,其实有两种方式,用于不同用处.
第一种是签名,使用私钥加密,公钥解密,用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改.但是不用来保证内容不被他人获得.
第二种是加密,用公钥加密,私钥解密,用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得.
如果甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据.最后再发给乙,这样确保了内容即不会被读取,也不会被篡改.
❷ RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密
其实公钥和私钥都可以用来加密或解密---只要能保证用A加密,就用B解密就行。至于A是公钥还是私钥,其实可以根据不同的用途而定。
例如说,如果你想把某个消息秘密的发给某人,那你就可以用他的公钥加密。因为只有他知道他的私钥,所以这消息也就只有他本人能解开,于是你就达到了你的目的。
但是如果你想发布一个公告,需要一个手段来证明这确实是你本人发的,而不是其他人冒名顶替的。那你可以在你的公告开头或者结尾附上一段用你的私钥加密的内容(例如说就是你公告正文的一段话),那所有其他人都可以用你的公钥来解密,看看解出来的内容是不是相符的。如果是的话,那就说明这公告确实是你发的---因为只有你的公钥才能解开你的私钥加密的内容,而其他人是拿不到你的私钥的。
最后再说一下数字签名。
数字签名无非就两个目的:
证明这消息是你发的;
证明这消息内容确实是完整的---也就是没有经过任何形式的篡改(包括替换、缺少、新增)。
其实,上面关于“公告”那段内容,已经证明了第一点:证明这消息是你发的。
那么要做到第二点,也很简单,就是把你公告的原文做一次哈希(md5或者sha1都行),然后用你的私钥加密这段哈希作为签名,并一起公布出去。当别人收到你的公告时,他可以用你的公钥解密你的签名,如果解密成功,并且解密出来的哈希值确实和你的公告原文一致,那么他就证明了两点:这消息确实是你发的,而且内容是完整的。
其实概念很简单:
❸ 公钥密码里面,如果一方用自己的私钥加密,解密用自己的公钥,公钥不是公开的吗任何人都可以解开
信息传输有两条路径,一是信息加密,二是身份认证,你说的这种只是身法认证环节,任何人拥有了你的公钥,都能确认是“你”发出的(因为你使用自己的私钥加密的,这个环节叫电子签名)。
而具体的密文的加密是使用你的公钥加密的,只有你的私钥可解密,其它人没有你的私钥,虽然收到了消息,也知道是你发出的(即前面说的身份认证过程畅通无阻),但是没法解密,因此无法知道具体信息内容。
❹ 公钥与私钥用于加解密和签名
公钥:公开持有,每个人都可以获得。
私钥:个人持有,需要保密不能泄露。
公钥加密,私钥解密
信息从公钥持有者中的某一个向私钥持有者发送。
加解密是为了让通信的第三方无法获取消息内容。
私钥签名,公钥验签
信息从私钥持有者向公钥持有者中的某一个发送。
签名是为了证明消息发送者的身份合法,即是“我”本人而不是其他人冒充我发送的消息。(但这个消息可能是公开的,如果希望加密发送,则需要另外一对儿公钥和私钥反方向持有,完成加解密过程)
私钥和公钥是一对,谁都可以加解密,只是谁加密谁解密是看情景来用的:
第一种情景是签名,使用私钥加密,公钥解密,用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改.但是不用来保证内容不被他人获得。
第二种情景是加密,用公钥加密,私钥解密,用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得。
比如加密情景:
如果甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据.最后再发给乙,这样确保了内容即不会被读取,也不会被篡改。
英文版: http://www.youdzone.com/signature.html
中文版: http://www.blogjava.net/yxhxj2006/archive/2012/10/15/389547.html
https://www.hu.com/question/25912483