Помощь нужна в правильном хешировании md5

Vaslas

Новичок
Регистрация
10.04.2016
Сообщения
9
Благодарностей
1
Баллы
3
Суть проблемы в следующем. Есть строка данных такого вида:
/method/exe.?v=4.107&https=1&device_id=5848jh49oa8498s&lang=ru&ref=single&access_key=&message=Ла лала лалалал&owner_id=7484746&access_token=311622f4i40do4020do30dos0fo40fcxos0b

Задача захешировать ее в md5

При попытке сделать хеш этим кодом

//Получаем значение строки из переменной
string input = project.Variables["delaem_md5"].Value;

// Создаем объект этого класса.
System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();
// Преобразуем входную строку в массив байт и вычисляем хэш
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
// Создаем новый Stringbuilder (Изменяемую строку) для набора байт
StringBuilder md5hash = new StringBuilder();
// Преобразуем каждый байт хэша в шестнадцатеричную строку
for (int i = 0; i < data.Length; i++)
{
//преобразуем элемент в шестнадцатиричную строку длиной в два символа
md5hash.Append(data.ToString("x2"));
}
//Возвращаем MD5 хеш для строки
return md5hash.ToString();


Получаем такой md5 - 0172465cd485429f5ded1b958938680a , он неверный. Должен быть другой.
При хешировании в нормальном онлайн сервисе , получаем такой - bc2bb6ca93959a6a9560b63ce32eb4ff ( именно этот правильный)

Возникает вопрос, почему в зенопостере делается неправильный хеш. Есть подозрения, что из-за символов различных в исходных данных. Но как это исправить я понятия не имею.
Буду благодарен за помощь. Нужен код C # , который правильно бы на зенки делал хеш.
 

dafaroff

Client
Регистрация
03.05.2011
Сообщения
76
Благодарностей
137
Баллы
33
Проблема с кодировкой, так верно будет
Код:
string input = project.Variables["delaem_md5"].Value;

// Создаем объект этого класса.
System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();
// Преобразуем входную строку в массив байт и вычисляем хэш
byte[] data = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(input));
// Создаем новый Stringbuilder (Изменяемую строку) для набора байт
StringBuilder md5hash = new StringBuilder();
// Преобразуем каждый байт хэша в шестнадцатеричную строку
for (int i = 0; i < data.Length; i++)
{
//преобразуем элемент в шестнадцатиричную строку длиной в два символа
md5hash.Append(data[i].ToString("x2"));
}
//Возвращаем MD5 хеш для строки
return md5hash.ToString();
 
  • Спасибо
Реакции: Vaslas

Vaslas

Новичок
Регистрация
10.04.2016
Сообщения
9
Благодарностей
1
Баллы
3
dafaroff, огромное спасибо! Все отлично работает :bp:
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)