网上会经常出现sha256加密的、md5加密算法等字眼,对于这样的描述经常会产生误解,sha256和md5都属于散列算法的一种,不应该被赋予加密的字眼,下面是加密和摘要的相关知识。
一、 定义
- 加密:指使用一个密钥和一种加密算法将数据转换成已加密的数据。(包括对称加密和非对称加密,加密后的数据可以通过密钥解密)Encryption takes a plain text and converts it to an encrypted text using a key and an encryption algorithm. The resulting encrypted text can later be decrypted (by using the same key and algorithm).
- 摘要:指将数据变成哈希值,不可逆。用来验证数据的完整性和唯一性。A digest takes a plain text and generates a hashcode which can be used to verify if the plain text is unmodified but cannot be used to decrypt the original text from the hash value.
二、误区纠正
- 摘要(digest)的算法是散列算法(Hashing Algorithm),没有所谓的 “加密” 、“解密” 的说法,很多书上都是描述为加密,容易产生误解。
- 摘要(digest)只是验证身份的令牌,我们无法通过摘要还原出原始数据。
三、 例子
- MD5
- MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5不是加密算法。``
- MD5信息摘要算法,网上说MD5算法用来加密和解密是错误的。
- 短数据用MD5生成摘要不安全,可通过穷举MD5字典来破解。
- SHA256
- SHA256是相对于MD5更安全的散列算法,它会产生一个256位的哈希值,称作消息摘要。这个摘要相当于是个长度为32个字节的数组,通常有一个长度为64的十六进制字符串来表示,其中1个字节=8位,一个十六进制的字符的长度为4位。SHA256因为有更多位的输出哈希值,破解难度更大,能够提高更高的安全性。
- SHA256不是加密算法,其不可逆。
参考文献:
https://juejin.cn/post/6844903561478799368
https://stackoverflow.com/questions/3332662/encryption-vs-digest#:~:text=Encryption%20conceals%20the%20contents%20of,came%20from%20a%20particular%20source.
https://stackoverflow.com/questions/326699/difference-between-hashing-a-password-and-encrypting-it
网友评论