сопоставление ввода текста с хэшированным значением в MySQL - PullRequest
2 голосов
/ 19 июня 2011

У меня есть приложение winform c #. Он подключается к MySQL удаленно и сопоставляет пароли, хранящиеся в таблице базы данных MySQL. Пароли хранятся с использованием SHA1. Я сохранил значение по умолчанию: «мой пароль» и хэшировал его, используя SHA1.

Когда приложение запускается, сначала пользователю предлагается ввести пароль. Для этого, если я использую нижеупомянутую функцию, тогда она генерирует другую строку хеша по сравнению с той, которая генерируется функцией MySQL SHA1. Как сопоставить значения? Пожалуйста, помогите.

  public static string HashCode(string str)
        {
            string rethash = "";
            try
            {

                System.Security.Cryptography.SHA1 hash = System.Security.Cryptography.SHA1.Create();
                System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();
                byte[] combined = encoder.GetBytes(str);
                hash.ComputeHash(combined);
                rethash = Convert.ToBase64String(hash.Hash);
            }
            catch (Exception ex)
            {
                string strerr = "Error in HashCode : " + ex.Message;
            }
            return rethash;
        }
    }

Зову это так:

 string hashedvalue =  HashCode("mypassword");
            MessageBox.Show("The hashed value is : " + hashedvalue);

Различаются ли хеширование обоих?

1 Ответ

2 голосов
/ 19 июня 2011

SHA-1 хэш от MySQL - это строка в шестнадцатеричном формате, в то время как C # дает строку в кодировке Base64, поэтому попробуйте это

rethash = BitConverter.ToString(hash.Hash).Replace("-", "");
...