什么是密码哈希?

17 passwords algorithm hash

哈希密码是什么意思?

Gav*_*ler 16

定义:
散列是将函数f()应用于可变大小的输入以生成恒定大小的输出.

A => f() => X
B => f() => Y
C => f() => Z
Run Code Online (Sandbox Code Playgroud)

散列也是单向函数,这意味着没有反转或撤消散列的函数.同样重新应用哈希f(f(x))也不会x再次产生.

细节:

哈希函数可以像"将13添加到输入"一样简单,也可以像密码哈希(如MD5SHA1)那样复杂.有很多东西构成一个好的哈希函数,如:

  • 低成本:易于计算
  • 确定性:如果我a多次散列输入,我每次都会获得相同的输出
  • 均匀性:输入将均匀分布在可能的输出中.这符合称为鸽笼原则的东西.由于输出数量有限,我们希望f()将这些输出均匀地放在同一个桶中.当两个输入计算到相同的输出时,这称为碰撞.哈希函数产生较少的冲突是一件好事.

哈希应用于密码:

密码的散列与上述过程相同,但它有一些特殊的考虑因素.在密码方面,构成良好散列函数的许多属性都没有用处.

确定性为例,因为当两个人使用相同的密码时哈希产生确定性结果,哈希在密码存储中看起来是相同的.这是件坏事!然而,这被称为的东西减轻了.

另一方面,均匀性是有益的,因为期望算法限制冲突.

因为散列是单向的意味着输入无法从输出中确定,这就是为什么散列对密码很有用!


Rob*_*ner 14

获取一个数据块并返回一个字符串,以便您无法获取原始数据块.

维基百科文章

散列密码将采用明文字符串并对其执行算法(取决于散列类型)以获得完全不同的值.此值每次都相同,因此您可以将散列密码存储在数据库中,并根据哈希检查用户输入的密码.

可以防止您将明文密码存储在数据库中(不好主意).

这是一个哈希函数列表.


mem*_*eme 6

哈希只是一个单向函数,它将采用字符串或数据源并创建加密的字符串.

有各种哈希算法,最受欢迎的是MD5,但还有很多其他算法.业内许多专家都在使用SHA256算法来提高安全性.

MD5哈希的话:

密码是22e5ab5743ea52caf34abcc02c0f161d

密码是319f4d26e3c536b5dd871bb2c52e3178

无论您尝试散列多少个字符,结果的字符长度都是相同的.哈希通常用于存储密码以防止被查看.