From f03461bfcb4499f6a1df71771348f24b26d3929c Mon Sep 17 00:00:00 2001 From: sy-records <52o@qq52o.cn> Date: Tue, 26 Sep 2023 08:21:55 +0800 Subject: [PATCH] Sync password --- .../password/functions/password-hash.xml | 18 +++++++++--------- .../functions/password-needs-rehash.xml | 19 ++++++++++--------- .../password/functions/password-verify.xml | 6 +++--- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/reference/password/functions/password-hash.xml b/reference/password/functions/password-hash.xml index cadca023d..f256a6306 100644 --- a/reference/password/functions/password-hash.xml +++ b/reference/password/functions/password-hash.xml @@ -1,6 +1,6 @@ - + @@ -281,13 +281,13 @@ $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K /** * 这个示例对服务器做了基准测试(benchmark),检测服务器能承受多高的 cost * 在不明显拖慢服务器的情况下可以设置最高的值 - * 8-10 是个不错的底线,在服务器够快的情况下,越高越好。 - * 以下代码目标为 ≤ 50 毫秒(milliseconds), - * 适合系统处理交互登录。 + * 10 是个不错的底线,在服务器够快的情况下,越高越好。 + * 以下代码目标为 ≤ 350 毫秒(milliseconds), + * 对于处理交互式登录的系统来说,这是一个合适的延迟时间。 */ -$timeTarget = 0.05; // 50 毫秒(milliseconds) +$timeTarget = 0.350; // 350 毫秒(milliseconds) -$cost = 8; +$cost = 10; do { $cost++; $start = microtime(true); @@ -302,7 +302,7 @@ echo "Appropriate Cost Found: " . $cost; &example.outputs.similar; @@ -335,12 +335,12 @@ Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP 就像以上提及的,在 PHP 7.0 提供 salt选项会导致废弃(deprecation)警告。 - 未来的 PHP 发行版里,手动提供盐值的功能可能会被删掉。 + 未来的 PHP 发行版里,手动提供盐值的功能已经在 PHP 8.0 移除。 - 在交互的系统上,推荐在自己的服务器上测试此函数,调整 cost 参数直至函数时间开销小于 100 毫秒(milliseconds)。 + 在交互的系统上,推荐在自己的服务器上测试此函数,调整 cost 参数直至函数时间开销小于 350 毫秒(milliseconds)。 上面脚本的示例会帮助选择合适硬件的最佳 cost。 diff --git a/reference/password/functions/password-needs-rehash.xml b/reference/password/functions/password-needs-rehash.xml index da4b5c4a8..2cacc3c5e 100644 --- a/reference/password/functions/password-needs-rehash.xml +++ b/reference/password/functions/password-needs-rehash.xml @@ -1,7 +1,6 @@ - - + @@ -100,19 +99,21 @@ $password = 'rasmuslerdorf'; $hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS'; -// 当硬件性能得到改善时,cost 参数可以再修改 -$options = array('cost' => 11); +$algorithm = PASSWORD_BCRYPT; +// bcrypt 的成本参数随着硬件的改进而可能发生变化 +$options = ['cost' => 12]; // 根据明文密码验证储存的散列 if (password_verify($password, $hash)) { - // 检测是否有更新的可用散列算法 - // 或者 cost 发生变化 - if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) { + // 检查算法或选项是否已经更改 + if (password_needs_rehash($hash, $algorithm, $options)) { // 如果是这样,则创建新散列,替换旧散列 - $newHash = password_hash($password, PASSWORD_DEFAULT, $options); + $newHash = password_hash($password, $algorithm, $options); + + // 使用 $newHash 更新用户记录 } - // 使用户登录 + // 执行登录 } ?> ]]> diff --git a/reference/password/functions/password-verify.xml b/reference/password/functions/password-verify.xml index 0d58a7c68..3c08a0940 100644 --- a/reference/password/functions/password-verify.xml +++ b/reference/password/functions/password-verify.xml @@ -1,7 +1,7 @@ - - + + password_verify @@ -70,7 +70,7 @@