Décoder hachage sha256 chiffrement, sachant que le sel
Je suis en train de faire un système de connexion pour une application web. Pour stocker les mots de passe dans la base de données, je suis chiffrement des mots de passe à l'aide de sha256 comme suit:
$salt ="sometext";
$escapedPW="userpass";
$saltedPW = $escapedPW . $salt;
$hashedPW = hash('sha256', $saltedPW);
echo "<center>".$hashedPW."</center>";
Dans la base de données je suis le stockage de l'utilisateur, le mot de passe utilisateur et le sel utilisé pour faire de hachage et de valider la connexion de l'utilisateur. Droit maintenant, je suis en train de faire la fonctionnalité pour envoyer à l'utilisateur un email avec votre mot de passe, mais lorsque l'utilisateur reçoit un e-mail, car il est stocké dans sha256 crypté mot de passe, l'utilisateur reçoit une longue chaîne et pas le mot de passe que l'utilisateur est censé connaître.
Ma question est-il possible que je puisse vous envoyer le réel de l'utilisateur mot de passe et non le mot de passe de cryptage, c'est à dire, il est possible de faire l'inverse de sha256 si je sais que le sel?. Si pas possible, quelle est la méthode de cryptage est recommandé pour vous de compléter le verso de la clé de chiffrement et d'envoyer le mot de passe de l'utilisateur dans un e-mail.
Un hash est censé être irréversible (dans un monde idéal, au moins). Si vous basez votre mot de passe de récupération système sur l'inversion de vos propres tables de hachage, vous devriez repenser ce que vous faites. Vous êtes en fait, d'essayer de pirater vous-même. +1 pour la question, même si, comme d'autres personnes peuvent avoir le même doute, et votre question est tout à fait utile.
Pas nécessairement, l'utilisateur doit être dans la DB, et le mot de passe est envoyé à l'utilisateur de courriel personnelle.
Quelle Marque et j'essaie de dire, c'est que vous utilisez une table de hachage lorsque vous voulez chiffrer un morceau de données de telle manière qu'elle ne doit jamais être déchiffré. Vous puis stocker le résultat. Si vous hachage d'un autre morceau de données et obtenir le même résultat, alors il est très probablement égale à l'original des données de la première haché. C'est la façon de hachage de fonctionnement de l'authentification. Le point est que si un hacker fait une copie de votre base de données, il ne sera pas en mesure d'inverser les utilisateurs des mots de passe à partir du hash. Il y a des façons de le faire, mais vous êtes au moins qui rend difficile pour les script kiddies.
Vous n'avez pas d'envoyer aux utilisateurs un mot de passe aléatoire; vous leur envoyez un jeton dans un lien de réinitialisation de mot de passe
OriginalL'auteur franvergara66 | 2013-09-06
Vous devez vous connecter pour publier un commentaire.
Comme mentionné dans les commentaires de votre question, l'inversion de la valeur de hachage est pas vraiment une option.
Ce que vous pouvez faire cependant, et c'est ce que tout le monde le fait. Dans votre code d'enregistrement (ex. register.php pour lesquelles votre post de formulaire vous pouvez faire le script PHP envoyer le mot de passe dans un e-mail, puis de les crypter et de les stocker dans la base de données.
Je suppose que vous avez un formulaire d'enregistrement de quelque sorte, et qui forme soi-disant postes pour les nouveaux utilisateurs de détails à un autre (ou le même) script php, n'est-ce pas?
Par exemple si mon formulaire a dit quelque chose comme
<form method="post" action="register.php">
Et dans
register.php
je puis avoir quelque chose commeUn peu rugueuse exemple de code. J'espère que cela aide!
Tout le plaisir est pour moi 🙂
OriginalL'auteur Henrik Skogmo
Vous ne devriez JAMAIS envoyer des mots de passe en clair par e-mail. Plutôt, envoyez un temps limité, à usage unique "réinitialiser le mot de passe", comme suggéré dans les commentaires.
Vous devriez pas utiliser un simple hash comme suggéré par @Henrik. L'utilisation d'un standard réglable-mot de passe KDF (PBKDF2,bcrypt,scrypt)
Si vous pouvez utiliser PHP 5.5, utilisez le les fonctions de hachage de mot de passe standard. Il y a des machines qui ne supportent PHP 5.5, mais vous devez regarder pour eux et demander.
Il ya beaucoup d'endroits sur le web qui expliquent comment le faire correctement (par exemple,https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines#Authentication) et beaucoup de ceux qui expliquent comment le faire correctement. VEUILLEZ prendre le temps de faire des recherches avant de vous décider d'utiliser votre propre système d'authentification.
OriginalL'auteur Terrel Shumway