什么是密码哈希?

时间:2009-10-21 18:42:46

标签: algorithm hash passwords

哈希密码是什么意思?

3 个答案:

答案 0 :(得分:16)

<强>定义:
Hashing是将函数f()应用于可变大小的输入以生成常量大小的输出。

A => f() => X
B => f() => Y
C => f() => Z

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

详细信息:

哈希函数可以像“添加13到输入”一样简单,也可以像Cryptographic Hash那样复杂,例如MD5SHA1。有许多东西构成了一个好的哈希函数,如:

  • Low Cost:易于计算
  • Deterministic:如果我多次散列输入a,我每次都会获得相同的输出
  • Uniformity:输入将均匀分布在可能的输出中。这符合Pigeonhole Principle的内容。由于输出数量有限,我们希望f()均匀地放置这些输出,而不是放在同一个存储桶中。当两个输入计算到相同的输出时,这称为碰撞。哈希函数产生较少的冲突是一件好事。

哈希应用于密码:

密码散列与上述过程相同,但它有一些特殊注意事项。构成良好哈希函数的许多属性在密码方面都没有用处。

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

的东西减轻了 另一方面,

Uniformity 是有益的,因为期望算法限制冲突。

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

答案 1 :(得分:13)

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

Wikipedia Article

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

阻止您将明文密码存储在数据库中(不好主意)。

这是list of hash functions

答案 2 :(得分:6)

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

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

MD5哈希的话:

密码是22e5ab5743ea52caf34abcc02c0f161d

PASSWORD是319f4d26e3c536b5dd871bb2c52e3178

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