将<?php
$hash = password_hash("漢字", PASSWORD_DEFAULT);
?>
与unicode字符一起使用是否安全,或者存在不兼容问题?
<?php
if($_POST && isset($_POST['fName'])) {
$people = count($_POST['fName']);
for($i=0; $i<$people; $i++) {
echo "<p>first name: {$_POST['fName'][$i]}, last name: {$_POST['lName'][$i]} ...</p>";
}
}
答案 0 :(得分:4)
散列算法本身可以处理字节,因此它们是unicode安全的,正如Mark评论的那样。唯一的问题可能是PHP处理unicode字符串,即密码散列函数binary-safe?让我们测试一下并找出:
<?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";
结果:
Pass: 100
Fail: 0
您的问题的答案是是,这是安全的。