(本人是菜鸟一枚,仅代表个人的一些见解,如有不对,请轻喷!!!!)
在进行系统通信时,对于一些比较隐私的信息不希望第三方看到,因此需要进行加密处理,以防止信息泄露。故在进行加密需要加密/解密,为了保证数据的完整性,需要签名/验签。
1.加密/解密
加密:顾名思义是对一组明文数据进行加密,变为“不可辨”的字符串的过程。
解密:将一组“不可辨”的字符串还原为明文数据的过程。
1.1 公钥加密
假如我有一个公钥和一个私钥,公钥是对外公开的,大家都知道了我的公钥,但私钥是个人保存的(只有自己知道),当A给我发私密消息时,用公钥进行了加密,放在网上,B获取这个公钥加密后的消息,但B不知道我的私钥,所以他无法解密出来这段信息的具体内容,只有我可以解密这段信息。
1.2 私钥加密
假如我用我的私钥去加密一段数据,这样知道我公钥的人都可以看到这段数据。这样做的好处是什么呢?那就是当A告诉我有人冒充我给他发消息,我就会用我的私钥加密一个数据1发送给他,并告诉他是不是1,他用我的公钥解密,发现果然是1。他以后就知道只有用我的公钥解密出来的才是我用我的私钥加密发送的。这个过程叫做数字签名
数字签名保证了数据的完整性、机密性以及发送方的“不可抵赖性”。
总结:
①公钥与私钥是成对存在的,它们是相互加密/解密。
②公钥加密,私钥解密。
③私钥签名,公钥验签。
(本文借鉴http://blog.csdn.net/21aspnet/article/details/7249401#)