哈希密码是什么意思?
定义:
Hashing http://en.wikipedia.org/wiki/Hash_function是函数的应用f()
到可变大小的输入以产生恒定大小的输出。
A => f() => X
B => f() => Y
C => f() => Z
哈希也是一种单向函数,这意味着没有函数可以反转或撤消哈希。以及重新应用哈希f(f(x))
不会生产x
again.
细节:
哈希函数可以像“将 13 添加到输入”一样简单,也可以像“将 13 添加到输入”一样复杂加密哈希 http://en.wikipedia.org/wiki/Cryptographic_hash_function例如MD5 http://en.wikipedia.org/wiki/MD5 or SHA1 http://en.wikipedia.org/wiki/SHA1。构成良好哈希函数的因素有很多,例如:
-
Low Cost http://en.wikipedia.org/wiki/Hash_function#Low_cost:易于计算
-
确定性 http://en.wikipedia.org/wiki/Hash_function#Determinism:如果我对输入进行哈希处理
a
多次,我每次都会得到相同的输出
-
均匀度 http://en.wikipedia.org/wiki/Hash_function#Uniformity:输入将均匀分布在可能的输出中。这符合所谓的鸽巢原理 http://en.wikipedia.org/wiki/Pigeonhole_principle。由于我们想要的输出数量有限
f()
将这些输出均匀地放置而不是放在同一个桶中。当两个输入计算出相同的输出时,这称为冲突。哈希函数产生较少的冲突是一件好事。
哈希应用于密码:
密码的散列与上述过程相同,但有一些特殊的注意事项。构成良好哈希函数的许多属性对于密码来说并没有什么好处。
举个例子决定论,因为当两个人使用相同的密码时,哈希会产生确定性结果,因此哈希在密码存储中看起来会相同。这是一件坏事!然而,这可以通过一种称为salt http://en.wikipedia.org/wiki/Salt_(cryptography).
均匀度另一方面是有益的,因为希望算法能够限制冲突。
因为哈希是One-Way意味着无法从输出确定输入,这就是散列对于密码非常有用的原因!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)