我正在尝试创建一个简单的哈希,用作PHP中的键值值。根据PHP最佳实践,我应该使用password_hash
然后使用password_verify
来确认它们是否匹配。
然而,我发现有多个值(在示例中有56个匹配)。
<?php
echo '<pre>';
$apiKey = hash('sha512', uniqid());
$apiToken = hash('sha512', uniqid());
$apiTokenHash = password_hash($apiToken, PASSWORD_DEFAULT);
echo '$apiKey = ' . $apiKey . ' length = ' . strlen($apiKey) . '<br/>';
echo '$apiToken = ' . $apiToken . ' length = ' . strlen($apiToken) . '<br/>';
echo '$apiTokenHash = ' . $apiTokenHash . ' length = ' . strlen($apiTokenHash) . '<br/>';
$verify = password_verify($apiToken, $apiTokenHash);
$style = ($verify) ? "color: green;" : '';
echo "<p style='{$style}'>({$apiToken} === {$apiTokenHash})</p>";
$count = 1;
while(strlen($apiToken) > 0) {
$apiToken = substr($apiToken, 0, -1);
$verify = password_verify($apiToken, $apiTokenHash);
$style = ($verify) ? "color: green;" : '';
echo "<p style='{$style}'>{$count} - ({$apiToken} === {$apiTokenHash})</p>";
$count++;
}
?>
有谁理解为什么password_verify接受了这么多答案。
P.S。我真的很想在你的PHP小提琴中找到它,但我无法弄清楚如何分享它的链接所以请不要给我一点困难。