Gav*_*ler 16
定义:
散列是将函数f()应用于可变大小的输入以生成恒定大小的输出.
A => f() => X
B => f() => Y
C => f() => Z
Run Code Online (Sandbox Code Playgroud)
散列也是单向函数,这意味着没有反转或撤消散列的函数.同样重新应用哈希f(f(x))也不会x再次产生.
细节:
哈希函数可以像"将13添加到输入"一样简单,也可以像密码哈希(如MD5或SHA1)那样复杂.有很多东西构成一个好的哈希函数,如:
a多次散列输入,我每次都会获得相同的输出f()将这些输出均匀地放在同一个桶中.当两个输入计算到相同的输出时,这称为碰撞.哈希函数产生较少的冲突是一件好事.哈希应用于密码:
密码的散列与上述过程相同,但它有一些特殊的考虑因素.在密码方面,构成良好散列函数的许多属性都没有用处.
以确定性为例,因为当两个人使用相同的密码时哈希产生确定性结果,哈希在密码存储中看起来是相同的.这是件坏事!然而,这被称为盐的东西减轻了.
另一方面,均匀性是有益的,因为期望算法限制冲突.
因为散列是单向的意味着输入无法从输出中确定,这就是为什么散列对密码很有用!
哈希只是一个单向函数,它将采用字符串或数据源并创建加密的字符串.
有各种哈希算法,最受欢迎的是MD5,但还有很多其他算法.业内许多专家都在使用SHA256算法来提高安全性.
MD5哈希的话:
密码是22e5ab5743ea52caf34abcc02c0f161d
密码是319f4d26e3c536b5dd871bb2c52e3178
无论您尝试散列多少个字符,结果的字符长度都是相同的.哈希通常用于存储密码以防止被查看.