什么是哈希算法?
哈希是密码学的基础
哈希函数的运算结果简称哈希值
哈希函数也称散列函数
根据维基百科的定义,哈希函数是将任意大小的数据,生成出一个固定长度的数据来作为它的映射(一一对应),它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
1. 哈希算法的基础
- 易压缩:任意长度的数据,算出的摘要长度都固定。
- 易计算:对于任意给定的消息,计算其Hash值比较容易。
- 独一无二:给定不同大小的输入数据,输出长度是一定的
- 单向性(安全性):给定数据m,容易算出哈希值x,而从哈希输出无法倒推输入的原始数值m
- 抗碰撞性:不同的Hash算法,理论上输出位数越高,抗碰撞性越好
补充:
- 碰撞(Collision):不同的输入得到相同的 Hash值
2. 哈希函数的主要作用
- 完整性校验
eg:一个系统中的登陆过程,需要对用户密码进行加密,存储在数据库中的密码是加密后的密码,而加密过程是不可逆的,即使数据库泄露,他人也不可轻易的得到用户的密码
3. 哈希函数分类
- 普通哈希
- 加密哈希
4. 常见的Hash算法
- CRC-32--------54bf652d(给定任意大小数据输出8位十六进制数)
- Md5-------------a15e14161a1c1c3ac15d21c5ac51cf51(给定任意大小数据输出32位十六进制数)
- SHA256--------d2c244161a1c1c3ac15d21c5a6c51c51d2c244161a1c1c3ac15d21c5a6c51c51(给定任意大小数据输出64位十六进制数)
-
注:SHA-2是一系列Hash算法的统称