将哈希函数作为哈希密码的一部分存储是不好的做法吗?

5

使用crackstation.net上的php源代码进行哈希+盐值处理,返回的哈希值包含所使用的哈希算法。我把从create_hash函数返回的哈希值存储到了数据库中。是否将此信息存储在数据库中是不良实践?这会给黑客带来优势吗?


2
由于 PHP 哈希函数支持多个哈希,因此您必须包括用于以后验证哈希值的哈希。哈希类型通常可以通过其字符串长度轻松识别(例如,md5 是 32 个字符,sha1 是 40 个字符等)。 - Marc B
1
如果你使用的是一个好的哈希函数,它不应该会出现问题。(假设单向函数存在。)单向函数的定义包括这样一种说法:给定原始函数和输出,很难检索输入。但请确保您使用的哈希函数没有被破解!Marc B提出了一个很好的观点——无论如何,你都需要知道。有人会认为使用哈希函数的整个目的在于可以不加区分地共享算法。 - vroomfondel
2个回答

3
我认为这是一个很好的做法。这意味着如果您升级哈希函数(使用更安全的函数),新用户将立即使用新函数。
现在,您不能立即重新对旧哈希函数上的用户进行哈希处理,因为您需要他们的密码来执行此操作,而您无法从其哈希状态中检索密码。相反,当这样的用户登录时,您可以使用他们的密码来存储一个新的哈希列,并重置其用户帐户的哈希函数。
因此,有了这样的配置,用户将在登录时逐渐转移到更安全的系统。

1

我不会说这是一种糟糕的做法。哈希函数通常可以从输出哈希的性质(如字符串长度等)中识别出来,因此您可能无论如何都不会告诉攻击者任何他们无法从哈希中推断出来的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接