Hash cryptant le mot de passe lors de l’insertion dans la firebase database

Je fais une application pour l’école et j’ai besoin d’aide pour chiffrer les mots de passe lors de leur insertion dans la firebase database de mes utilisateurs. Je programme en langage de programmation c # et utilise MS server 2008 R2 pour manipuler ma firebase database. Je pense faire un cryptage HASH et j’aimerais beaucoup que quelqu’un m’aide.

Voici mon code pour insérer des données dans la firebase database:

using (SqlConnection con = new SqlConnection("Data Source=HRC0;Initial Catalog=users;Integrated Security=True")) //MLHIDE using (SqlCommand sc = new SqlCommand("if NOT exists (select * from users where UserName = @username) insert into users (userName, password) values(@userName, @password)", con)) { con.Open(); sc.Parameters.AddWithValue("@username", korisnik.Text); sc.Parameters.AddWithValue("@password", pass.Text); int o = sc.ExecuteNonQuery(); if (o == -1) { MessageBox.Show(Ulaz.Properties.Resources.Niste_ubačeni_u_bazi_korisničk); this.Hide(); new Registracija().Show(); } else { MessageBox.Show(Ulaz.Properties.Resources.Ubačeni_ste_u_bazi); con.Close(); this.Hide(); new Form1().Show(); } 

et voici mon code pour vérifier la connexion:

 SqlConnection con = new SqlConnection("Data Source=HRC0;Initial Catalog=users;Integrated Security=True"); SqlCommand cmd = new SqlCommand("select * from users where userName='" + user.Text + "' and password='" + pass.Text + "'", con); //MLHIDE con.Open(); SqlDataReader re = cmd.ExecuteReader(); if (re.Read()) { ImeUsera = user.Text; new UserMode().Show(); this.Hide(); } else { this.Hide(); new LoginFail().Show(); } } 

J’ai utilisé un module complémentaire multilingue afin qu’il convertisse mes chaînes en ” Ulaz.Properties.Resources. ” Et simmilar.

Pour hacher une chaîne de texte, vous pouvez utiliser une fonction comme celle-ci.

 private ssortingng GetHashedText(ssortingng inputData) { byte[] tmpSource; byte[] tmpData; tmpSource = ASCIIEncoding.ASCII.GetBytes(inputData); tmpData = new MD5CryptoServiceProvider().ComputeHash(tmpSource); return Convert.ToBase64Ssortingng(tmpData); } 

et appliquer à votre entrée d’utilisateur. Puis stockez le résultat dans la firebase database. Lors de la connexion, vous réappliquez la fonction de hachage au mot de passe saisi et comparez le résultat à la valeur stockée.

Donc, dans votre code d’insertion, vous écrivez

  sc.Parameters.AddWithValue("@password", GetHashedText(pass.Text)); 

et dans votre chèque

  .... SqlCommand cmd = new SqlCommand("select * from users where userName=@user and password=@pass", con); con.Open(); cmd.Parameters.AddWithValue("@user",user.Text); cmd.Parameters.AddWithValue("@pass", GetHashedText(pass.Text)); SqlDataReader re = cmd.ExecuteReader(); if (re.Read()) ..... 

N’oubliez pas que le hachage n’est pas réversible, vous ne pouvez donc pas récupérer le mot de passe d’origine à partir du texte haché. Vous appliquez la fonction de hachage à votre texte et vous l’enregistrez en tant que chaîne base64. Si votre utilisateur oublie le mot de passe, vous devez le réinitialiser avec une valeur connue. Il n’y a aucun moyen de lui dire le mot de passe original.

À propos, pourquoi dans votre chèque, vous n’utilisez pas de parameters comme dans le code d’insertion? N’utilisez jamais la concaténation de chaînes pour créer des requêtes SQL. Même si vous êtes pressé de finir le travail