它具有以下特点:
固定大小
雪崩效应
单向
冲突避免
2 特点
要设计一个良好的Hash算法,应该满足以下要求.
2.1 固定大小
不管多大的数据,得出的hash值长度都是一样的....看下图这个漏斗,我们可以形象的理解为,不管多大的东西进去,出来的值总是固定大小的....我们可以通过入参x计算出hash值y,但是反向推导是不可行的,即不能通过hash结果y轻易计算出源数据x.
2.4 冲突避免
对于不同的文件,我们应该尽量确保计算出的hash值是不一样的....那玩意数据库里的密码竟然存的是HASH值?
由于不可逆的特性,你破解数据库拿到数据后,看到一堆hash值,也很难猜到真实的用户密码.
那我存成hash值,怎么知道用户输入的明文密码对不对啊?...记录下常见的"源数据-hash值",我拿着hash值查表,这不把密码找到了吗?
所以呀,让你不要用常见的密码,给你整个hash骗骗眼睛又怎么样,hash值都被别人存起来了.