可以安全地使用password_hash
如下的unicode字符或存在不兼容问题吗?
<?php
$hash = password_hash("??", PASSWORD_DEFAULT);
?>
Run Code Online (Sandbox Code Playgroud)
正如 Mark 所评论的,哈希算法本身对字节起作用,因此它们是 unicode 安全的。唯一的问题可能是 PHP 对 unicode 字符串的处理,即密码哈希函数是二进制安全的吗?让我们测试一下并找出答案:
<?php
$pass = 0;
$fail = 0;
# Generate 100 random unicode passwords
for ($i = 0; $i < 100; $i++) {
$password = '';
for ($p = 0; $p < 10; $p++) {
$password .= mt_rand(0xa1, 0xffff);
}
# Test password hashing
$hash = password_hash($password, PASSWORD_DEFAULT);
if (password_verify($password, $hash)) {
$pass++;
} else {
$fail++;
}
}
echo "Pass: $pass\nFail: $fail\n";
Run Code Online (Sandbox Code Playgroud)
结果:
Pass: 100
Fail: 0
Run Code Online (Sandbox Code Playgroud)
你的问题的答案是肯定的,它是安全的。
归档时间: |
|
查看次数: |
429 次 |
最近记录: |