Same algorytmy haszowania działają na bajtach, więc są bezpieczne w Unicode, jak skomentował Mark. Jedynym problemem może być obsługa łańcuchów znaków Unicode przez PHP, tj. Czy są to funkcje hashujące hasłami binary-safe? Załóżmy, przetestować i dowiedzieć się:
<?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";
Wynik:
Pass: 100
Fail: 0
Odpowiedź na Twoje pytanie jest tak, że to bezpieczne.
Skórki działają przeciwko bajtom, a nie przeciwko znakom; tak doskonale bezpieczny i nie ma problemów ze zgodnością –
@MarkBaker dziękuję bardzo. – user5115459
@MarkBaker może wtedy zamienić twój komentarz na odpowiedź. – domsson