单向散列函数(One-way hash function),可以根据根据消息内容计算出散列值
单向散列函数,又被称为消息摘要函数(message digest function),哈希函数
输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint)
散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值
单向散列函数的特点
-
1.根据任意长度的消息,计算出固定长度的散列值
-
2.计算速度快,能快速计算出散列值
-
3.消息不同,散列值也不同,即使输入很相似的数值,散列值也会很大不同
-
4.具备单向性(不可能通过哈希值返回来算原数据)
-
5.散列值(哈希值)通常以16进制表示
-
6.查找的时间复杂度为o(1)
注意:即使输入完全不同的数据,输出相同的哈希值也会以低概率出现,这被称为”哈希值的冲突”
常见的几种单向散列函数
MD4、MD5
产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全
Mac终端上默认可以使用md5命令
示例,在终端上查看md5指令
md5 --help
输出
md5: illegal option -- -
usage: md5 [-pqrtx] [-s string] [files ...]
使用md5
md5 -s "123"
输出
MD5 ("123") = 202cb962ac59075b964b07152d234b70
在桌面新建1.txt文件,输入123,查看文件的md5
cd ~/Desktop/
touch 1.txt
open 1.txt
MD5 1.txt
输出
MD5 (1.txt) = 202cb962ac59075b964b07152d234b70
可见值相同,那么md5值也相同
SHA-1 产生160bit的散列值,目前已经不安全
SHA-2 SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit
SHA-3 全新标准,专家正在研究中
现在通常使用SHA-2
单向散列函数的应用
1.验证数据是否被篡改
2.口令加密
这也就是为啥没有一个平台有找回密码的功能,,只有重置密码或者忘记密码,因为他们平台也不知道密码