加密和解密
通俗的讲,RSA的公钥和私钥都可以用来加密或解密--只要能保证用A加密,就用B解密就行。至于A是公钥还是私钥,不同的情形下不同。
举两个例子:
1、把某个消息发给老王,不想被其他人知道,就可以用老王的公钥加密消息。因为只有他知道自己私钥,所以这个消息只有他本人才能用私钥解密消息;
2、自己想发布一个消息,需要通过一个技术手段来保证是自己发布,而不是别人伪造的。可以用自己的私钥加密发布的消息。其他人收到消息后,用自己的公钥解密消息,看看解密的内容是否一致。如果一致的话,则确定是自己发布的消息。因为只有自己的公钥才能解开你的私钥加密的内容。
数字签名
数字签名的目的:
1、确保消息是本人发送;
2、确保消息内容完整---没有经过任何形式的篡改(替换、缺少、新增)。
其实,上面关于“消息”的内容,已经证明了第一点:证明这消息是本人所发。
那么要保证第二点很简单,把消息的原文做一次哈希(md5或者sha1都行),然后用私钥加密这段哈希并作为签名,并一起公布出去。当别人收到消息时,他可以用公钥解密签名,如果解密成功,并且解密出来的哈希值确实消息原文一致,那么就证明了两点:这消息确实是本人所发的,且消息没有经过篡改。