Maison > Article > développement back-end > Comment les mots de passe doivent-ils être stockés en toute sécurité ?
1 : Connaissances de base : Hachage avec Salt
Nous savons déjà que les attaquants malveillants utilisent des tables de recherche et des tables arc-en-ciel pour déchiffrer les hachages ordinaires. La rapidité du cryptage. Nous avons également
appris que l'utilisation de hachages salés de manière aléatoire peut résoudre ce problème. Mais quel type de sel utilisons-nous et comment le mélanger dans un mot de passe ?
La valeur salt doit être générée à l'aide d'un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé
, CSPRNG. CSPRNG est très différent des générateurs de nombres pseudo-aléatoires ordinaires,
comme la fonction rand() du langage "C". Comme son nom l'indique, CSPRNG est conçu pour être cryptographiquement sécurisé, ce qui signifie qu'il peut fournir des nombres aléatoires hautement aléatoires et complètement imprévisibles. Nous ne voulons pas que la valeur du sel soit prévisible, c'est pourquoi CSPRNG doit être utilisé.
Le tableau suivant répertorie les méthodes CSPRNG de certaines plateformes de programmation grand public actuelles.
Plateforme | CSPRNG |
---|---|
PHP | mcrypt_create_iv , openssl_random_pseudo_bytes |
Java | java.security.SecureRandom |
Dot NET (C#, VB) | System.Security.Cryptography.RNGCryptoServiceProvider |
Ruby | SecureRandom |
Python | os .urandom |
Perl | Math::Random::Secure | C/C++ (API Windows) | CryptGenRandom |
Tout langage sur GNU/Linux ou Unix | Lire depuis /dev/random ou /dev/urandom |
Platform | CSPRNG |
---|---|
PHP | mcrypt_create_iv, openssl_random_pseudo_bytes |
Java | java.security.SecureRandom |
Dot NET (C#, VB) | System.Security.Cryptography.RNGCryptoServiceProvider |
Ruby | SecureRandom |
Python | os.urandom |
Perl | Math::Random::Secure |
C/C++ (Windows API) | CryptGenRandom |
Any language on GNU/Linux or Unix | Read from /dev/random or /dev/urandom |
Utilisez CSPRNG pour générer une valeur de sel aléatoire suffisamment longue.
Récupérer la valeur de sel de l'utilisateur à partir de la base de données et la valeur de hachage correspondante.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!