2015-07-20 10 views
8

Czy można bezpiecznie używać password_hash ze znakami Unicode, takimi jak poniższe, czy też występują problemy z niekompatybilnością?Czy można bezpiecznie używać hasła password_hash ze znakami Unicode?

<?php 
$hash = password_hash("漢字", PASSWORD_DEFAULT); 
?> 
+4

Skórki działają przeciwko bajtom, a nie przeciwko znakom; tak doskonale bezpieczny i nie ma problemów ze zgodnością –

+0

@MarkBaker dziękuję bardzo. – user5115459

+0

@MarkBaker może wtedy zamienić twój komentarz na odpowiedź. – domsson

Odpowiedz

3

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.

Powiązane problemy