私はPHPでキー値のpareとして使用する単純なハッシュを作成しようとしています。 PHPのベストプラクティスによれば、私はpassword_hash
を使用し、次に一致することを確認するためにpassword_verify
を使用する必要があります。password_verifyはeverythigns a matchを言う
しかし、複数の値があることがわかりました(この例では、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のフィドルでこれを取得しようとしましたが、私はそれについてのリンクを共有する方法を理解することはできませんので、私はそれについて苦労しないでください。
ideone.comを使用してPHPの擬人化を行うことができます。それにはリンクを得るための共有ボタンがあります。 – Barmar
ありがとうございます!私はPHPのフィドルが嫌いです。 – RachelC