【发布时间】:2020-07-18 19:48:42
【问题描述】:
根据研究,我的印象是,当用相同的函数对字符串进行哈希处理时,它总是会返回相同的哈希值。我正在运行一个程序并使用 php 中的 password_hash() 函数进行哈希,但结果我不断得到不同的哈希,因此,当我比较它们时,它不起作用。
这是我正在处理的示例。
要散列的 PIN:1212
Initial Hash是第1行,其他3个是以下尝试:
$2y$10$5CAoU8snW79.8WpCS3T0Y.6OT4YkSYIlS2LrII8DweMzjTV5JGh2Cnone
$2y$10$SZgvvB7WG.gXB/AUbWeIOO8HnBit6F7fG.My/Pcyi4D0zXgb3/n3G
$2y$10$9b.WTA3r4ZYMHdtGN28.Je1qJ4R3n.1Mac1hD3kl.NleiCPmuZRianone
$2y$10$VEuLdnKUYftcJFtbY2KqJOJLQ4B/spuhRk6zywyTzjko7y4aZBGWunone
我正在使用的函数看起来像这样,并且在3个不同的地方使用,但我认为这不会影响结果。
$pin = password_hash($_POST['pin'],PASSWORD_DEFAULT);
【问题讨论】:
-
不 - 你的权利。 假定每次都返回不同的哈希值,因为该函数使用随机盐。您应该使用
password_verify()将未经编辑的密码与哈希值进行比较。 I explain all of this here -
好的,我去看看。您知道验证函数将如何处理发生在与需要进行验证的地方不同的 php 文件中的散列吗?
-
阅读 stackoverflow.com/questions/30279321/… 以了解其工作原理。
-
是 - 使用
password_hash()存储哈希密码,然后在需要验证时检索哈希。 -
好的,我相信这很容易,但这让我很困惑。登录的工作方式是,用户只输入一个 PIN 码。没有用户名或其他任何东西。鉴于此,我如何识别需要提取的哈希?
标签: php encryption hash hashcode