Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.06.01;
Скачать: [xml.tar.bz2];

Вниз

md5   Найти похожие ветки 

 
listvenniza   (2013-08-07 15:56) [0]

прошу помощи.
трассирую прогу под нет.
идет вызов стандартной с крипто апи md5sum
передается строка: "C1BFEBFBFF000306A98AB5C567"
функция возвращает: ""3898a80d277947193310068008b5f1ae""

перепробывал на дельфи все найденные мд5 вариации, в основном на выходе имею: "7c195f9e5b6364e712f8f07b08cc0ec2"
он лайн сервисы то же дают.

в какую сторону копать? вроде бы пробывал и юникодные варианты строки. или может организация функции GetMd5Sum другая?


 
listvenniza   (2013-08-07 15:58) [1]

реализация  GetMd5Sum:

public static string GetMd5Sum(string str)
{
   Encoder encoder = Encoding.Unicode.GetEncoder();
   byte[] bytes = new byte[str.Length * 2];
   encoder.GetBytes(str.ToCharArray(), 0, str.Length, bytes, 0, true);
   byte[] buffer2 = new MD5CryptoServiceProvider().ComputeHash(bytes);
   StringBuilder builder = new StringBuilder();
   for (int i = 0; i < buffer2.Length; i++)
   {
       builder.Append(buffer2[i].ToString("x2"));
   }
   return builder.ToString();
}


 
ProgRAMmer Dimonych ©   (2013-08-07 17:27) [2]

Рискну предположить, что дело в том, как интерпретируется строка теми же онлайн-сервисами и библиотеками. Наверняка берут в однобайтовой кодировке или в UTF-8, или ещё как-нибудь. А в Вашей GetMd5Sum() используется UTF-16. Хеш считается не от строки, а от массива байтов. Соответственно если реализация хеш-функции правильная (а это скорее всего так), проблема в том, как строка преобразуется в массив байтов.

Ещё, помнится, в универских лабах столкнулся с отличиями в значениях HMAC, полученных CryptoAPI и своей реализацией строго по RFC, но здесь ведь не этот случай. Да и не столь важно, совпадают ли эеши с эталонными. Важнее, чтобы совпадали у отправителя и получателя.

А какова конечная цель?


 
listvenniza   (2013-08-07 17:31) [3]

спасибо, вопрос закрыт!

вообщем нужно было в дельфи перевести в юникод
Encoding.Unicode.GetEncoder("...")  затем уже считать мд5 полученных байтов.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2014.06.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.001 c
2-1376130285
Вова
2013-08-10 14:24
2014.06.01
как вписать прямоугольник между прямоугольниками


3-1298717850
ddd329
2011-02-26 13:57
2014.06.01
Вложенные таблицы


15-1384410584
[ВладОшин]
2013-11-14 10:29
2014.06.01
Инди, дисконнект вызывает AV


15-1385099301
MonoLife
2013-11-22 09:48
2014.06.01
TDBLookupComboBox в wine.


15-1380878947
JohnKorsh
2013-10-04 13:29
2014.06.01
Искажения кнопок в Windows 7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский