% bl0ck_qu0te%
Em seguida, você precisa salvar a saída no formato que /etc/shadow
espera, que, conforme explicado por AlexP, é:
$<method>$<salt>$<hash>
A saída de
password_hash
é diferente. Ele retorna:
$<method>$<cost>$<hash>
Por exemplo, uma senha de a
( password_hash("a", PASSWORD_DEFAULT)
) é enviada para mim:
$2y$10$w4hgkTWvE37igKd9TMn8xOcCNT/L/lojOEkqaPyIW4qdyAp92GmHC
E o sal é estranhamente parte do hash:
password_hash("a", PASSWORD_DEFAULT, ['salt'=>'abcdefghijklmnopqrstuv'])
// $2y$10$abcdefghijklmnopqrstuuj/LkVFwQAC6H0GkC0f1Bcmj82rKvDn.
Mas a versão shadow
é:
$6$OaeCC6PI$qGI4OTUD/seGOvJE.ckkrWMoqiVQBf8EXtQFto7MsKP8TyTCxPXPF66csX3c4ljdRnjM1U8W65EpwUgMF.4qf0
Veja o sal no segundo campo?
De qualquer forma, não sei o que o PHP está fazendo aqui. Você provavelmente deve usar crypt
, mas não sou especialista em PHP e isso é uma questão para SO.
Além disso, para mim, man crypt
informa que 2y
não é entendido por ele:
If salt is a character string starting with the characters "$id$" fol-
lowed by a string terminated by "$":
$id$salt$encrypted
then instead of using the DES machine, id identifies the encryption
method used and this then determines how the rest of the password
string is interpreted. The following values of id are supported:
ID | Method
---------------------------------------------------------
1 | MD5
2a | Blowfish (not in mainline glibc; added in some
| Linux distributions)
5 | SHA-256 (since glibc 2.7)
6 | SHA-512 (since glibc 2.7)