(PECL xpass >= 1.1.0)
crypt_gensalt β ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΡΠΎΠ»Ρ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ crypt
Π€ΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ crypt() ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΎΠ»ΠΈ.
prefixCRYPT_PREFIX_*.
ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ null ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ±Π΅ΡΠ΅Ρ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ ΠΈΠ· Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ Ρ
Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
count0 ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ±Π΅ΡΠ΅Ρ Π½ΠΈΠ·ΠΊΡΡ ΡΠ΅Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ null, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ crypt_gensalt()
<?php
// ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΎΠ»ΠΈ
$salt = crypt_gensalt(CRYPT_PREFIX_BLOWFISH);
// Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ
$hash = crypt("secret", $salt);
// ΠΡΠΎΠ²Π΅ΡΠΊΠ° Ρ
Π΅ΡΠ°
$test = hash_equals(crypt("secret", $hash), $hash);
var_dump($salt, $hash, $test);
?>Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
string(29) "$2y$05$GcPykP.Am8C1.dGamdpwW." string(60) "$2y$05$GcPykP.Am8C1.dGamdpwW.1RR.7uicWvJPZfJfCEizZHqVWwuaJLm" bool(true)