-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46620
- shell命令
-
- 文章:(42)篇
- 阅读:154526
- Git教程
-
- 文章:(36)篇
- 阅读:235155
- leetCode刷题
-
- 文章:(76)篇
- 阅读:132294
-
公钥和私钥哪些事2019-02-26 21:35 阅读(5034) 评论(0)
一、常见概念
加密:是基于数据安全考虑,将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。
认证:用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。
对称秘钥:称私钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难,容易泄露。常用对称加密算法有:DES、 IDEA、 RC2、 RC4、 SKIPJACK、 RC5、 AES等。
非对称秘钥:又称公钥密钥加密。它需要使用一对密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。RSA是一个非常经典的非对称加密算法。
公钥加密体制
比如,有两个用户A和用户B,他们是异地,用户A想给用户B发QQ消息,但是用户A和用户B担心,他们的QQ消息被其他人看到,怎么搞呢?
首先,B用户就生成了自己的公钥和私钥。
其次,B用户通过QQ消息,把公钥发给用户A,告诉用户A,发消息的时候,使用这个公钥加密哈。(当然,这个消息可能被其他用户看到,其他用户也就知道这个公钥了)
然后,A用户把消息通过公钥加密后,发给了用户B。由于消息是加密的,即使其他用户看到用户A发给用户B的消息,也看不懂。
最后,B用户通过自己的私钥解密消息,就能够知道用户A发给自己的是什么。
签名体制
假设还有一个用户C,他偷看到了B用户发给A用户的公钥,于是他就可以利用公钥,模拟A的身份,给用户B发消息。为了让B用户能够不被其他用户的消息迷惑,怎么搞呢?
首先,A用户也生成了自己的公钥和私钥。
其次,A用户通过QQ消息,把公钥发给用户B,告诉用户B,收到消息后,通过公钥解密一下消息里面的签名,就能判断这条消息,是否为自己发的。
然后,A在给用户B发QQ消息的时候,都会利用自己的私钥,生成一个签名,放在消息后面。
这样,如果C用户,模拟A的身份,给用户B发消息,由于不知道A用户的私钥,就不能生成对应的签名。
二、加密和签名的区别
加密,那肯定是不希望别人知道自己的消息,所以只有自己才能解密,可得出公钥负责加密,私钥负责解密;
签名,那肯定是不希望有人冒充自己发消息,所以自己才能发布这个签名,可得出私钥负责签名,公钥负责验证。