概念:一般翻译做“散列”,就是把任意长度的输入通过散列函数变化成固定长度的输出,该输出就是散列值。
散列的空间通常远远小于输入的空间,不同的输入会散列城相同的输出(散列冲突)。
优秀hash特点:
常见加密hash函数:
-md5 -SHA1/256/512 -HMAC
- 正向快速
- 逆向困难
- 输入敏感(输入一点改动,输出也会不一样)
- 冲突避免
-
应用:
数据结构
-对于数据空间的组织,散列开来,建立快速映射的关系,往往数据的插查询,插入,删除都比较迅速。接近于O(1)。密码学的应用:
- 用户密码的加密
- 搜索引擎
- 版权
- 数字签名
MD5: 直接加密
不足:不够安全了,可以反查询
加盐: 盐是固定的,写死在程序里面,一旦泄露就不安全了。
解决:加