在 PHP 中加密密码

phpserver side programmingprogramming

由于 Blowfish 在 PHP 5.3.7 版之前存在漏洞,因此建议改用 SHA-256 或 SHA-512。它们都具有与 Blowfish 类似的 salt 格式(对于 SHA-256 使用前缀 $5$,对于 SHA-512 使用前缀 $6$)。除此之外,它还包含一个可选的 rounds 参数来强制进行多次哈希处理。

salt 本身略短,只有 16 个字符,但与 Blowfish 不同,它允许的不仅仅是字母数字字符。

示例

echo 'SHA-256 (no rounds): ' . crypt('password-to-encrypt', '$5$YourSaltyStringz$');
echo 'SHA-512 (with rounds): ' . crypt('password-to-encrypt', '$6$rounds=1000$YourSaltyStringz$');

输出

这将产生以下输出 −

SHA-256 (no rounds): $5$YourSaltyStringz$td0INaoVoMPD4kieVrkGE67siKj3N8.HSff8ep0Ybs8SHA-512 (with rounds): $6$rounds=1000$YourSaltyStringz$A5UHscsEbSnPnaV6PmSF5T/MQK.Wc3klA.18c.gXG5pD0PVYSVr/7xwRu1XJyn8XpiMDNRTvpJm5S8DkmSywz1

与 Blowfish 类似,生成的哈希值将包含 salt 作为生成哈希值的一部分。


相关文章