On dit actuellement que MD5 est partiellement dangereux. Compte tenu de cela, je voudrais savoir quel mécanisme utiliser pour la protection par mot de passe.
Cette question, le «double hachage» est-il un mot de passe moins sûr qu'un simple hachage une fois? suggère que le hachage plusieurs fois peut être une bonne idée, alors comment mettre en œuvre la protection par mot de passe pour des fichiers individuels? suggère d'utiliser du sel.
J'utilise PHP. Je veux un système de cryptage de mot de passe sûr et rapide. Hacher un mot de passe un million de fois peut être plus sûr, mais aussi plus lent. Comment atteindre un bon équilibre entre vitesse et sécurité? De plus, je préférerais que le résultat ait un nombre constant de caractères.
- Le mécanisme de hachage doit être disponible en PHP
- Il doit être sûr
- Il peut utiliser du sel (dans ce cas, tous les sels sont-ils également bons? Existe-t-il un moyen de générer de bons sels?)
De plus, dois-je stocker deux champs dans la base de données (un utilisant MD5 et un autre utilisant SHA, par exemple)? Serait-il plus sûr ou moins sûr?
Au cas où je ne serais pas assez clair, je veux savoir quelle (s) fonction (s) de hachage utiliser et comment choisir un bon sel afin d'avoir un mécanisme de protection par mot de passe sûr et rapide.
Questions connexes qui ne couvrent pas tout à fait ma question:
Quelle est la différence entre SHA et MD5 dans PHP
Simple Password Encryption
Méthodes sécurisées de stockage des clés et des mots de passe pour asp.net
Comment implémenteriez-vous les mots de passe salés dans Tomcat 5.5
Réponses:
TL; DR
À ne pas faire
\0
, ce qui peut sérieusement affaiblir la sécurité.)Dos
Pourquoi hacher les mots de passe de toute façon?
L'objectif derrière le hachage des mots de passe est simple: empêcher l'accès malveillant aux comptes d'utilisateurs en compromettant la base de données. Le but du hachage de mot de passe est donc de dissuader un pirate ou un pirate en leur coûtant trop de temps ou d'argent pour calculer les mots de passe en texte brut. Et le temps / coût sont les meilleurs moyens de dissuasion dans votre arsenal.
Une autre raison pour laquelle vous voulez un bon hachage robuste sur les comptes d'utilisateurs est de vous donner suffisamment de temps pour changer tous les mots de passe du système. Si votre base de données est compromise, vous aurez besoin de suffisamment de temps pour au moins verrouiller le système, sinon changer chaque mot de passe de la base de données.
Jeremiah Grossman, CTO de Whitehat Security, a déclaré sur le blog de White Hat Security après une récente récupération de mot de passe qui nécessitait une rupture par force brute de sa protection par mot de passe:
(Je souligne.)
Qu'est-ce qui fait un bon mot de passe de toute façon?
Entropie . (Non pas que je souscrive pleinement au point de vue de Randall.)
En bref, l'entropie correspond à la variation du mot de passe. Lorsqu'un mot de passe n'est composé que de lettres romaines minuscules, cela ne représente que 26 caractères. Ce n'est pas beaucoup de variation. Les mots de passe alphanumériques sont meilleurs, avec 36 caractères. Mais autoriser les majuscules et les minuscules, avec des symboles, est d'environ 96 caractères. C'est bien mieux que de simples lettres. Un problème est que pour rendre nos mots de passe mémorables, nous insérons des modèles, ce qui réduit l'entropie. Oops!
L'entropie de mot de passe est approximée facilement. L'utilisation de la gamme complète de caractères ascii (environ 96 caractères typables) donne une entropie de 6,6 par caractère, ce qui à 8 caractères pour un mot de passe est encore trop faible (52,679 bits d'entropie) pour une sécurité future. Mais la bonne nouvelle est que les mots de passe plus longs et les mots de passe avec des caractères unicode augmentent vraiment l'entropie d'un mot de passe et le rendent plus difficile à déchiffrer.
Il y a une discussion plus longue sur l'entropie des mots de passe sur le site Crypto StackExchange . Une bonne recherche Google donnera également de nombreux résultats.
Dans les commentaires, j'ai parlé à @popnoodles, qui a souligné que l' application d' une politique de mot de passe de longueur X avec X nombreuses lettres, chiffres, symboles, etc., pouvait en fait réduire l'entropie en rendant le schéma de mot de passe plus prévisible. Je suis d'accord. L'aléatoire, aussi aléatoire que possible, est toujours la solution la plus sûre mais la moins mémorable.
Pour autant que j'ai pu le dire, créer le meilleur mot de passe au monde est un Catch-22. Soit ce n'est pas mémorable, trop prévisible, trop court, trop de caractères Unicode (difficile à taper sur un appareil Windows / Mobile), trop long, etc. Aucun mot de passe n'est vraiment assez bon pour nos besoins, nous devons donc les protéger comme s'ils étaient à Fort Knox.
Les meilleures pratiques
Bcrypt et scrypt sont les meilleures pratiques actuelles. Scrypt sera meilleur que bcrypt dans le temps, mais il n'a pas été adopté en tant que norme par Linux / Unix ou par les serveurs Web, et n'a pas encore fait l'objet d'un examen approfondi de son algorithme. Mais encore, l'avenir de l'algorithme semble prometteur. Si vous travaillez avec Ruby, il y a un joyau scrypt qui vous aidera et Node.js a maintenant son propre package scrypt . Vous pouvez utiliser Scrypt en PHP via l' extension Scrypt ou l' extension Libsodium (les deux sont disponibles dans PECL).
Je suggère fortement de lire la documentation de la fonction crypt si vous voulez comprendre comment utiliser bcrypt, ou vous trouver un bon wrapper ou utiliser quelque chose comme PHPASS pour une implémentation plus héritée. Je recommande un minimum de 12 tours de bcrypt, sinon 15 à 18.
J'ai changé d'avis sur l'utilisation de bcrypt lorsque j'ai appris que bcrypt utilise uniquement le calendrier des clés de blowfish, avec un mécanisme de coût variable. Ce dernier vous permet d'augmenter le coût de la force brute d'un mot de passe en augmentant le calendrier de clés déjà cher de Blowfish.
Pratiques moyennes
Je ne peux presque plus imaginer cette situation. PHPASS prend en charge PHP 3.0.18 à 5.3, il est donc utilisable sur presque toutes les installations imaginables et doit être utilisé si vous ne savez pas avec certitude que votre environnement prend en charge bcrypt.
Mais supposons que vous ne puissiez pas utiliser du tout bcrypt ou PHPASS. Et alors?
Essayez une implémentation de PDKBF2 avec le nombre maximal de tours que votre environnement / application / perception de l'utilisateur peut tolérer. Le nombre le plus bas que je recommanderais est de 2500 tours. Assurez-vous également d'utiliser hash_hmac () s'il est disponible pour rendre l'opération plus difficile à reproduire.
Pratiques futures
Venir en PHP 5.5 est une bibliothèque de protection par mot de passe complète qui résume toutes les difficultés de travailler avec bcrypt. Alors que la plupart d'entre nous sont bloqués avec PHP 5.2 et 5.3 dans la plupart des environnements courants, en particulier les hôtes partagés, @ircmaxell a construit une couche de compatibilité pour la prochaine API qui est rétrocompatible avec PHP 5.3.7.
Récapitulatif de la cryptographie et avis de non-responsabilité
La puissance de calcul requise pour réellement casser un mot de passe haché n'existe pas. La seule façon pour les ordinateurs de "casser" un mot de passe est de le recréer et de simuler l'algorithme de hachage utilisé pour le sécuriser. La vitesse du hachage est linéairement liée à sa capacité à être forcé par la force brute. Pire encore, la plupart des algorithmes de hachage peuvent être facilement parallélisés pour fonctionner encore plus rapidement. C'est pourquoi les schémas coûteux comme bcrypt et scrypt sont si importants.
Vous ne pouvez pas prévoir toutes les menaces ou voies d'attaque, et vous devez donc faire de votre mieux pour protéger vos utilisateurs à l'avance . Si vous ne le faites pas, vous pourriez même manquer le fait que vous avez été attaqué jusqu'à ce qu'il soit trop tard ... et vous êtes responsable . Pour éviter cette situation, agissez paranoïaque pour commencer. Attaquez votre propre logiciel (en interne) et tentez de voler les informations d'identification de l'utilisateur, ou de modifier les comptes d'autres utilisateurs ou d'accéder à leurs données. Si vous ne testez pas la sécurité de votre système, vous ne pouvez blâmer personne d'autre que vous-même.
Enfin: je ne suis pas cryptographe. Tout ce que j'ai dit, c'est mon opinion, mais je pense que c'est basé sur le bon vieux bon sens ... et beaucoup de lecture. N'oubliez pas, soyez aussi paranoïaque que possible, rendez les choses aussi difficiles à empiéter que possible, puis, si vous êtes toujours inquiet, contactez un pirate à chapeau blanc ou un cryptographe pour voir ce qu'ils disent de votre code / système.
la source
Une réponse beaucoup plus courte et plus sûre - n'écrivez pas du tout votre propre mécanisme de mot de passe , utilisez un mécanisme éprouvé.
La plupart des programmeurs n'ont tout simplement pas l'expertise nécessaire pour écrire du code lié à la cryptographie en toute sécurité sans introduire de vulnérabilités.
Auto-test rapide: qu'est-ce que l'étirement des mots de passe et combien d'itérations devez-vous utiliser? Si vous ne connaissez pas la réponse, vous devriez l'utiliser
password_hash()
, car l'étirement des mots de passe est désormais une caractéristique essentielle des mécanismes de mot de passe en raison de processeurs beaucoup plus rapides et de l'utilisation de GPU et FPGA pour casser les mots de passe à des taux de milliards de suppositions par seconde (avec les GPU ).Par exemple, vous pouvez casser tous les mots de passe Windows à 8 caractères en 6 heures en utilisant 25 GPU installés sur 5 PC de bureau. Il s'agit d'un forçage brut, c'est-à-dire d'énumérer et de vérifier chaque mot de passe Windows à 8 caractères , y compris les caractères spéciaux, et ce n'est pas une attaque par dictionnaire. C'était en 2012, à partir de 2018, vous pouviez utiliser moins de GPU ou craquer plus rapidement avec 25 GPU.
Il existe également de nombreuses attaques de table arc-en-ciel sur les mots de passe Windows qui s'exécutent sur des processeurs ordinaires et sont très rapides. Tout cela est parce que Windows encore ne pas le sel ou étirer ses mots de passe, même dans Windows 10 - ne faites pas la même erreur que Microsoft a fait!
Voir également:
password_hash()
ouphpass
sont la meilleure façon de procéder.la source
Je ne stockerais pas le mot de passe haché de deux manières différentes, car alors le système est au moins aussi faible que le plus faible des algorithmes de hachage utilisés.
la source
Depuis PHP 5.5, PHP dispose de fonctions simples et sécurisées pour hacher et vérifier les mots de passe, password_hash () et password_verify ()
Lorsqu'il
password_hash()
est utilisé, il génère un sel aléatoire et l'inclut dans le hachage en sortie (avec le coût et l'algorithme utilisé.)password_verify()
Puis lit ce hachage et détermine le sel et la méthode de cryptage utilisés, et le vérifie par rapport au mot de passe en clair fourni.Fournir l'
PASSWORD_DEFAULT
instruction PHP d'utiliser l'algorithme de hachage par défaut de la version installée de PHP. Exactement quel algorithme que cela signifie est destiné à changer au fil du temps dans les futures versions, de sorte qu'il sera toujours l'un des algorithmes les plus puissants disponibles.L'augmentation du coût (par défaut à 10) rend le hachage plus difficile à utiliser par force brute, mais signifie également que générer des hachages et vérifier les mots de passe par rapport à eux sera plus de travail pour le processeur de votre serveur.
Notez que même si l'algorithme de hachage par défaut peut changer, les anciens hachages continueront à vérifier très bien car l'algorithme utilisé est stocké dans le hachage et le
password_verify()
reprend.la source
Bien que la question ait été répondue, je veux juste réitérer que les sels utilisés pour le hachage doivent être aléatoires et non pas comme l'adresse e-mail comme suggéré dans la première réponse.
Plus d'explications sont disponibles sur- http://www.pivotalsecurity.com/blog/password-hashing-salt-should-it-be-random/
la source
Je veux juste souligner que PHP 5.5 inclut une API de hachage de mot de passe qui fournit un wrapper
crypt()
. Cette API simplifie considérablement la tâche de hachage, de vérification et de remaniement des hachages de mot de passe. L'auteur a également publié un pack de compatibilité (sous la forme d'un seul fichier password.php que vous devez simplementrequire
utiliser), pour ceux qui utilisent PHP 5.3.7 et versions ultérieures et qui souhaitent l'utiliser dès maintenant.Il ne prend en charge que BCRYPT pour l'instant, mais il vise à être facilement étendu pour inclure d'autres techniques de hachage de mot de passe et parce que la technique et le coût sont stockés dans le cadre du hachage, les modifications apportées à votre technique / coût de hachage préféré n'invalideront pas les hachages actuels, le cadre utilisera automatiquement la technique / le coût correct lors de la validation. Il gère également la génération d'un sel «sécurisé» si vous ne définissez pas explicitement le vôtre.
L'API expose quatre fonctions:
password_get_info()
- renvoie des informations sur le hachage donnépassword_hash()
- crée un hachage de mot de passepassword_needs_rehash()
- vérifie si le hachage donné correspond aux options données. Utile pour vérifier si le hachage est conforme à votre schéma technique / coût actuel, vous permettant de ressasser si nécessairepassword_verify()
- vérifie qu'un mot de passe correspond à un hachagePour le moment, ces fonctions acceptent les constantes de mot de passe PASSWORD_BCRYPT et PASSWORD_DEFAULT, qui sont actuellement synonymes, la différence étant que PASSWORD_DEFAULT "peut changer dans les versions PHP plus récentes lorsque des algorithmes de hachage plus récents et plus forts sont pris en charge". L'utilisation de PASSWORD_DEFAULT et de password_needs_rehash () lors de la connexion (et ressassement si nécessaire) devrait garantir que vos hachages sont raisonnablement résistants aux attaques par force brute avec peu ou pas de travail pour vous.
EDIT: Je viens de réaliser que cela est mentionné brièvement dans la réponse de Robert K. Je vais laisser cette réponse ici car je pense qu'elle fournit un peu plus d'informations sur son fonctionnement et sa facilité d'utilisation pour ceux qui ne connaissent pas la sécurité.
la source
J'utilise Phpass qui est une simple classe PHP à un fichier qui pourrait être implémentée très facilement dans presque tous les projets PHP. Voir aussi la H .
Par défaut, il a utilisé le cryptage le plus puissant disponible qui est implémenté dans Phpass, qui est
bcrypt
et revient à d'autres cryptages jusqu'à MD5 pour fournir une compatibilité descendante avec des frameworks comme Wordpress.Le hachage retourné peut être stocké dans la base de données tel quel. Exemple d'utilisation pour générer du hachage:
Pour vérifier le mot de passe, on peut utiliser:
la source
CHOSES À RETENIR
Beaucoup a été dit sur le cryptage de mot de passe pour PHP, dont la plupart sont de très bons conseils, mais avant même de commencer le processus d'utilisation de PHP pour le cryptage de mot de passe, assurez-vous que les éléments suivants sont implémentés ou prêts à être implémentés.
SERVEUR
PORTS
Peu importe la qualité de votre cryptage, si vous ne sécurisez pas correctement le serveur qui exécute PHP et DB, tous vos efforts ne valent rien. La plupart des serveurs fonctionnent relativement de la même manière, ils ont des ports attribués pour vous permettre d'y accéder à distance via ftp ou shell. Assurez-vous de modifier le port par défaut dont vous avez activé la connexion à distance. En ne faisant pas cela, vous avez en fait obligé l'attaquant à faire un pas de plus pour accéder à votre système.
NOM D'UTILISATEUR
Pour tout ce qui est bon dans le monde, n'utilisez pas le nom d'utilisateur admin, root ou quelque chose de similaire. De plus, si vous êtes sur un système basé sur Unix, NE Rendez PAS la connexion au compte root accessible, elle doit toujours être sudo uniquement.
MOT DE PASSE
Vous dites à vos utilisateurs de faire de bons mots de passe pour éviter d'être piraté, faites de même. Quel est l'intérêt de passer par tous les efforts de verrouillage de votre porte d'entrée lorsque la porte arrière est grande ouverte.
BASE DE DONNÉES
SERVEUR
Idéalement, vous voulez que votre base de données et votre application sur des serveurs distincts. Ce n'est pas toujours possible en raison du coût, mais cela permet une certaine sécurité car l'attaquant devra passer par deux étapes pour accéder pleinement au système.
UTILISATEUR
Votre application doit toujours avoir son propre compte pour accéder à la base de données et ne lui accorder que les privilèges dont elle aura besoin.
Ensuite, ayez un compte utilisateur distinct pour vous qui n'est stocké nulle part sur le serveur, même pas dans l'application.
Comme toujours, NE faites PAS cette racine ou quelque chose de similaire.
MOT DE PASSE
Suivez les mêmes directives que pour tous les bons mots de passe. De plus, ne réutilisez pas le même mot de passe sur aucun compte SERVER ou DB sur le même système.
PHP
MOT DE PASSE
NE JAMAIS stocker un mot de passe dans votre base de données, mais plutôt stocker le hachage et le sel unique, je vous expliquerai pourquoi plus tard.
HACHAGE
ONE WAY HASHING! de la même manière et comparez les deux hachages. Cela signifie que même si un attaquant a accès à la base de données, il ne sait pas quel est réellement le mot de passe, juste son hachage résultant. Ce qui signifie plus de sécurité pour vos utilisateurs dans le pire scénario possible.
Il y a beaucoup de bonnes fonctions de hachage là - bas (
password_hash
,hash
, etc ...) mais vous devez choisir un bon algorithme pour le hachage pour être efficace. (bcrypt et ceux qui lui sont similaires sont des algorithmes décents.)Lorsque la vitesse de hachage est la clé, le plus lent est le plus résistant aux attaques Brute Force.
L'une des erreurs les plus courantes dans le hachage est que les hachages ne sont pas uniques aux utilisateurs. Cela est principalement dû au fait que les sels ne sont pas générés de manière unique.
SALAISON
Les mots de passe doivent toujours être salés avant d'être hachés. Salting ajoute une chaîne aléatoire au mot de passe afin que les mots de passe similaires n'apparaissent pas de la même manière dans la base de données. Cependant, si le sel n'est pas unique à chaque utilisateur (c'est-à-dire: vous utilisez un sel codé en dur), vous avez pratiquement rendu votre sel sans valeur. Parce qu'une fois qu'un attaquant a trouvé un sel de mot de passe, il a le sel pour chacun d'eux.
Lorsque vous créez un sel, assurez-vous qu'il est unique au mot de passe qu'il salte, puis stockez le hachage et le sel terminés dans votre base de données. Ce que cela fera, c'est de faire en sorte qu'un attaquant doive casser individuellement chaque sel et hachage avant de pouvoir y accéder. Cela signifie beaucoup plus de travail et de temps pour l'attaquant.
UTILISATEURS CRÉANT DES MOTS DE PASSE
Si l'utilisateur crée un mot de passe via le frontend, cela signifie qu'il doit être envoyé au serveur. Cela ouvre un problème de sécurité car cela signifie que le mot de passe non crypté est envoyé au serveur et si un attaquant est capable d'écouter et d'accéder à ce que toute votre sécurité en PHP ne vaut rien. TOUJOURS transmettre les données en toute sécurité, cela se fait via SSL, mais soyez las même SSL n'est pas sans faille (la faille Heartbleed d'OpenSSL en est un exemple).
Demandez également à l'utilisateur de créer un mot de passe sécurisé, c'est simple et devrait toujours être fait, l'utilisateur en sera reconnaissant à la fin.
Enfin, peu importe les mesures de sécurité que vous prenez, rien n'est sûr à 100%, plus la technologie à protéger est avancée, plus les attaques deviennent avancées. Mais suivre ces étapes rendra votre site plus sécurisé et beaucoup moins souhaitable pour les attaquants.
Voici une classe PHP qui crée facilement un hachage et du sel pour un mot de passe
http://git.io/mSJqpw
la source
Google dit que SHA256 est disponible pour PHP.
Vous devez absolument utiliser un sel. Je recommanderais d'utiliser des octets aléatoires (et ne vous limitez pas aux caractères et aux chiffres). Comme d'habitude, plus vous choisissez, plus il est sûr et lent. 64 octets devraient être corrects, je suppose.
la source
Au final, le double hachage, mathématiquement, n'apporte aucun avantage. En pratique, cependant, il est utile pour prévenir les attaques basées sur la table arc-en-ciel. En d'autres termes, il n'est pas plus avantageux que le hachage avec un sel, ce qui prend beaucoup moins de temps processeur dans votre application ou sur votre serveur.
la source
J'ai trouvé un sujet parfait à ce sujet ici: https://crackstation.net/hashing-security.htm , je voulais que vous en profitiez, voici également le code source qui prévient également les attaques basées sur le temps.
la source
J'utilise généralement SHA1 et salt avec l'ID utilisateur (ou une autre information spécifique à l'utilisateur), et parfois j'utilise également un sel constant (j'ai donc 2 parties pour le sel).
SHA1 est désormais également considéré comme quelque peu compromis, mais dans une bien moindre mesure que MD5. En utilisant un sel (n'importe quel sel), vous empêchez l'utilisation d'une table arc- en -ciel générique pour attaquer vos hachages (certaines personnes ont même réussi à utiliser Google comme une sorte de table arc-en-ciel en recherchant le hachage). Un attaquant pourrait éventuellement générer une table arc-en-ciel en utilisant votre sel, c'est pourquoi vous devriez inclure un sel spécifique à l'utilisateur. De cette façon, ils devront générer une table arc-en-ciel pour chaque enregistrement de votre système, pas seulement un pour l'ensemble de votre système! Avec ce type de salage, même le MD5 est décemment sécurisé.
la source
SHA1 et un sel devraient suffire (selon, naturellement, si vous codez quelque chose pour Fort Knox ou un système de connexion pour votre liste de courses) dans un avenir prévisible. Si SHA1 ne vous convient pas, utilisez SHA256 .
L'idée d'un sel est de déséquilibrer les résultats de hachage, pour ainsi dire. Il est connu, par exemple, que le hachage MD5 d'une chaîne vide est
d41d8cd98f00b204e9800998ecf8427e
. Donc, si quelqu'un avec suffisamment de mémoire voit ce hachage et sait que c'est le hachage d'une chaîne vide. Mais si la chaîne est salée (par exemple, avec la chaîne "MY_PERSONAL_SALT
"), le hachage de la "chaîne vide" (c'est-à-dire "MY_PERSONAL_SALT
") devientaeac2612626724592271634fb14d3ea6
, donc non évident à revenir en arrière. Ce que je suis en train de dire qu'il est préférable d'utiliser tout sel, que de ne pas. Par conséquent, il n'est pas trop important de savoir quel sel utiliser.Il existe en fait des sites Web qui font exactement cela - vous pouvez lui fournir un hachage (md5), et il crache un texte en clair connu qui génère ce hachage particulier. Si vous pouviez accéder à une base de données qui stocke des hachages md5 simples, il serait trivial pour vous d'entrer le hachage pour l'administrateur d'un tel service et de vous connecter. Mais, si les mots de passe étaient salés, un tel service deviendrait inefficace.
En outre, le double hachage est généralement considéré comme une mauvaise méthode, car il diminue l'espace de résultat. Tous les hachages populaires sont à longueur fixe. Ainsi, vous ne pouvez avoir qu'une valeur finie de cette longueur fixe et les résultats deviennent moins variés. Cela pourrait être considéré comme une autre forme de salage, mais je ne le recommanderais pas.
la source
sha1(sha1($foo))
réduit efficacement l'espace de sortie, car toute collision de la fonction intérieure deviendra automatiquement une collision de la fonction extérieure. La dégradation est linéaire, mais c'est toujours une préoccupation. Les méthodes de hachage itératives réinjectent des données à chaque tour, telles que$hash = sha1(sha1($salt . $password) . $salt)
. Mais ce n'est toujours pas bon ... Restez avec PBKDF2 ou Bcrypt ...ok dans le fit, nous avons besoin de sel de sel doit être unique alors laissez-le générer
nous avons aussi besoin du hachage que j'utilise sha512 c'est le meilleur et c'est en php
maintenant nous pouvons utiliser ces fonctions pour générer un mot de passe sûr
maintenant, nous devons enregistrer dans la base de données notre valeur de variable $ hash_psw et la variable $ salt
et pour autoriser, nous utiliserons les mêmes étapes ...
c'est le meilleur moyen de sécuriser les mots de passe de nos clients ...
Ps pour les 2 dernières étapes, vous pouvez utiliser votre propre algorithme ... mais assurez-vous de pouvoir générer ce mot de passe haché à l'avenir lorsque vous devrez autoriser l'utilisateur ...
la source
sha512
(même salée) est largement considérée comme insuffisante pour la protection par mot de passe. (également que RNG n'est pas cryptographiquement sécurisé, donc l'utiliser pour la génération de mot de passe est risqué).