对称加密和非对称加密的区别
对称加密和非对称加密是两种常见的数据加密方法,它们在加密和解密的过程中使用不同的密钥机制。
对称加密适用于需要快速处理的大数据量场景,而非对称加密则适用于需要高安全性的小数据量场景。两者可以结合使用,例如在SSL/TLS协议中,使用非对称加密传输对称加密的密钥,从而兼顾速度和安全性。
对称加密
对称加密使用相同的密钥进行加密和解密。加密算法是公开的,依赖于密钥的保密性。常见的对称加密算法包括AES、DES、3DES算法等。
优点
- 速度快:对称加密的计算量小,加密和解密速度快,适合大数据量的加密。
- 效率高:由于算法简单,资源消耗较低。
缺点
- 密钥管理困难:在数据传输前,发送方和接收方必须商定好密钥,并且双方都要妥善保管密钥。一旦密钥泄露,数据安全性将受到威胁。
非对称加密
非对称加密使用一对密钥:公钥和私钥。公钥用于加密,私钥用于解密,反之亦然。常见的非对称加密算法包括RSA、DSA、ECC等。
优点
- 安全性高:即使密文被拦截或公钥被获取,也无法解密密文,因为解密需要私钥。
- 密钥管理方便:公钥可以公开,私钥由自己保管,不需要在通信双方之间传递。
缺点
- 速度慢:非对称加密的算法复杂,计算量大,加密和解密速度较慢。
- 资源消耗高:由于算法复杂,资源消耗较大,不适合大数据量的加密。
你只要想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
所谓加密解密,签名验签,是使用的两对完全不同的公私钥
其实公钥和私钥都可以用来加密或解密—只要能保证用A加密,就用B解密就行。至于A是公钥还是私钥,其实可以根据不同的用途而定。
例如说,如果你想把某个消息秘密的发给某人,那你就可以用他的公钥加密。因为只有他知道他的私钥,所以这消息也就只有他本人能解开,于是你就达到了你的目的。
但是如果你想发布一个公告,需要一个手段来证明这确实是你本人发的,而不是其他人冒名顶替的。那你可以在你的公告开头或者结尾附上一段用你的私钥加密的内容(例如说就是你公告正文的一段话),那所有其他人都可以用你的公钥来解密,看看解出来的内容是不是相符的。如果是的话,那就说明这公告确实是你发的—因为只有你的公钥才能解开你的私钥加密的内容,而其他人是拿不到你的私钥的。
数字签名无非就两个目的
- 证明这消息是你发的;
- 证明这消息内容确实是完整的—也就是没有经过任何形式的篡改(包括替换、缺少、新增)。
其实,上面关于“公告”那段内容,已经证明了第一点:证明这消息是你发的。
那么要做到第二点,也很简单,就是把你公告的原文做一次哈希(md5或者sha1都行),然后用你的私钥加密这段哈希作为签名,并一起公布出去。当别人收到你的公告时,他可以用你的公钥解密你的签名,如果解密成功,并且解密出来的哈希值确实和你的公告原文一致,那么他就证明了两点:这消息确实是你发的,而且内容是完整的。