MD5 в C# отличается от MD5 в PHP

 
0
 
.NET
ava
Torgovec | 03.06.2008, 15:43
Нарыл в тырнете код, где описано как реализовать MD5 функцию:

public string EncodePassword(string password) {
string strHash = string.Empty;
foreach (byte b in new MD5CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(password))) {
if (b < 16)
strHash += "0" + b.ToString("x2");
else
strHash += b.ToString("x2");
}
return strHash;
}

Проблема в том, что эта функция возвращает результат отличный от функций md5 в php или mysql. Я знаю, что пустая строка пропущенная через md5 должна возвращать "d41d8cd98f00b204e9800998ecf8427e", но моя функция возвращает значение "9b7a989bbdc6c92eb6b2ed8a65d46dab". Прошу помочь найти в чем может быть ошибка. В форуме ничего не нашёл по этому вопросу...
Ответы (2)
ava
QryStaL | 03.06.2008, 15:52 #

public string CreateHash(string password)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] input = Encoding.Default.GetBytes(password);
byte[] output = md5.ComputeHash(input);
StringBuilder sb = new StringBuilder();
foreach (byte b in output)
{
sb.Append(b.ToString("x"));
}
return sb.ToString();
}
ava
Torgovec | 03.06.2008, 15:57 #
QryStaL, спасибо Вам, все работает.
Нашел ещё один способ, может пригодится кому...
Добавляем в References System.Web и пишем такую функцию

public string EncodePassword(string password) {
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5").ToLower();
}
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить