Méthode de déchiffrement de la fonction de chiffrement

J’ai une méthode qui est utilisée pour chiffrer le mot de passe et le stocker dans la firebase database comme ci-dessous:

public static ssortingng Md5Encrypted(ssortingng password) { byte[] pass = Encoding.UTF8.GetBytes(password); MD5 md5 = new MD5CryptoServiceProvider(); ssortingng strPassword = Encoding.UTF8.GetSsortingng(md5.ComputeHash(pass)); return strPassword; } 

Maintenant, je veux la méthode qui decrypt le mot de passe que je reçois de la firebase database qui a été cryptée par la méthode ci-dessus tout en le stockant. Je ne sais pas comment le faire. Quelqu’un peut m’aider s’il vous plait?

MD5 est une fonction de hachage (pas un cryptage) et est irréversible. Autrement dit, vous ne pouvez pas calculer la valeur d’origine à partir d’un hachage donné.

Mise à jour: je recommande cet article qui décrit comment stocker les hachages de mots de passe de manière sécurisée. Il y a aussi une implémentation de C #.

http://crackstation.net/hashing-security.htm

Vous ne pouvez pas déchiffrer cela, car le hachage est une fonction à sens unique – vous ne pouvez pas prendre une valeur hachée et la reconvertir à la valeur d’origine.

Puisqu’il semble que vous avez affaire à des mots de passe et que je suppose donc qu’il s’agit d’une sorte de mécanisme d’ouverture de session, c’est (probablement) OK. Ce que vous devez faire, c’est hacher le mot de passe (comme vous l’avez fait) et stocker la valeur hachée lorsque votre utilisateur s’enregistre sur votre site Web. Lorsque l’utilisateur revient sur votre site, vous prenez le mot de passe qu’il a saisi, vous le hachez (selon la même méthode) et vous comparez la valeur hachée à la valeur que vous avez stockée. Si les deux hachages correspondent, le mot de passe correct a été entré.

Sels
Il y a un problème avec les hachages, en ce que la même valeur d’entrée produit toujours la même valeur hachée (sinon, le mécanisme d’ouverture de session ci-dessus ne fonctionnerait pas). Malheureusement, cela signifie que la création de valeurs de hachage pour, par exemple, un dictionnaire de mots de passe courants est un exercice sortingvial. Si votre firebase database est compromise, un attaquant peut alors comparer tous les mots de passe hachés que vous avez stockés avec ses valeurs précédemment calculées. S’il obtient une correspondance, alors Bazinga! il a dans vos données.
Pour vous protéger contre cela, ce que vous pouvez faire lorsque vous effectuez votre hachage initial consiste en même temps à générer un peu plus de données aléatoires qui sont mélangées au mot de passe lors de son hachage. Ceci s’appelle un sel (ou moins communément un nonce). Plutôt que de reproduire du code pour le faire, je vais maintenant vous diriger vers le livre Beginning ASP.NET Security ( Amazon UK | Amazon US ) de blowdart , qui traite de toutes ces choses – hachage, salage et ‘ bon cryptage.

La fonction de hachage MD5 est irréversible et ne peut pas être déchiffrée. Si vous souhaitez vérifier le nom d’utilisateur et le mot de passe lors de la connexion, procédez ainsi.

 1.While registering a new user, Hash the password and store it in database. 2.During login,Hash the password entered by the user 3.Now,Compare the password entered(Hashed ) with password stored in database(Hashed) 4.If both of them are same then allow user to login else display an error