(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_pwhash_str — Renvoie un hachage encodé en ASCII
$password
, int $opslimit
, int $memlimit
): stringUtilise un algorithme de hachage dur en CPU et en mémoire avec un sel généré aléatoirement, et des limites de mémoire et de CPU pour générer un hachage encodé en ASCII adapté au stockage de mots de passe.
password
string; The password to generate a hash for.
opslimit
Représente une quantité maximale de calculs à effectuer. Augmenter ce nombre fera que la fonction nécessitera plus de cycles CPU pour calculer une clé. Il existe des constantes disponibles pour définir la limite d'opérations à des valeurs appropriées en fonction de l'utilisation prévue, dans l'ordre de la force : SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE
, SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE
et SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE
.
memlimit
Le montant maximum de RAM que la fonction utilisera, en octets. Il existe des constantes pour vous aider à choisir une valeur appropriée, dans l'ordre de la taille : SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
, SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE
et SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE
. Typiquement, ces valeurs devraient être associées aux valeurs opslimit correspondantes.
Renvoie le hachage de mot de passe.
Pour produire le même hachage de mot de passe à partir du même mot de passe, les mêmes valeurs pour opslimit
et memlimit
doivent être utilisées.
Ces valeurs sont intégrées dans le hachage généré, donc tout ce qui est nécessaire pour vérifier le hachage est inclus. Cela permet
à la fonction sodium_crypto_pwhash_str_verify() de vérifier le hachage sans
avoir besoin de stockage séparé pour les autres paramètres.
Exemple #1 Exemple de sodium_crypto_pwhash_str()
<?php
$password = 'password';
echo sodium_crypto_pwhash_str(
$password,
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);
Résultat de l'exemple ci-dessus est similaire à :
$argon2id$v=19$m=65536,t=2,p=1$oWIfdaXwWwhVmovOBc2NAQ$EbsZ+JnZyyavkafS0hoc4HdaOB0ILWZESAZ7kVGa+Iw
Note:
Les hachages sont calculés en utilisant l'algorithme Argon2ID, fournissant une résistance à la fois aux attaques GPU et aux attaques par canaux latéraux. Contrairement à la fonction password_hash(), il n'y a pas de paramètre de sel (un sel est généré automatiquement), et les paramètres
opslimit
etmemlimit
ne sont pas optionnels.