Php 密码(u verify)表示一切都匹配

Php 密码(u verify)表示一切都匹配,php,Php,我试图创建一个简单的散列,在PHP中用作键值pare。根据PHP最佳实践,我应该使用password\u hash,然后使用password\u verify确认它们匹配 但是,我发现有多个值(在示例中有56个匹配项) 密码\u hash()使用的算法不能对长度超过72个字符的字符串进行哈希运算。较长的字符串在散列之前会被截断。密码\u hash()使用的算法不能散列长度超过72个字符的字符串。较长的字符串在散列之前会被截断。您可以使用ideone.com制作PHP小提琴。它有一个分享按钮,让你

我试图创建一个简单的散列,在PHP中用作键值pare。根据PHP最佳实践,我应该使用
password\u hash
,然后使用
password\u verify
确认它们匹配

但是,我发现有多个值(在示例中有56个匹配项)


密码\u hash()
使用的算法不能对长度超过72个字符的字符串进行哈希运算。较长的字符串在散列之前会被截断。

密码\u hash()使用的算法不能散列长度超过72个字符的字符串。较长的字符串在散列之前会被截断。

您可以使用ideone.com制作PHP小提琴。它有一个分享按钮,让你得到链接。谢谢!!!我讨厌php提琴。你可以使用ideone.com制作php提琴。它有一个分享按钮,让你得到链接。谢谢!!!我讨厌php fiddle.OMG谢谢!我查看了所有的php文档密码散列,看看是否有一个最大长度,但没有看到它。我当然应该看看长度,别难过。PHP文档中没有提到它!谢谢你证实这一点,我总是觉得很糟糕,当我问堆栈上的东西和它的东西,我错过了在文档。天哪,谢谢你!我查看了所有的php文档密码散列,看看是否有一个最大长度,但没有看到它。我当然应该看看长度,别难过。PHP文档中没有提到它!谢谢你证实这一点,我总是觉得很糟糕,当我问的东西堆栈和它的东西,我错过了在文件。
<?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++;
}
?>