Хэширование MD5 не совпадает в C# и PHP


Я пробовал хэшировать строку в PHP с использованием MD5 и то же самое в C#, но результаты разные.. может кто-нибудь объяснить мне, как это сопоставить?

Мой код на C# выглядит как

md5 = new MD5CryptoServiceProvider();
            originalBytes = ASCIIEncoding.Default.GetBytes(AuthCode);
            encodedBytes = md5.ComputeHash(originalBytes);

            Guid r = new Guid(encodedBytes);
            string hashString = r.ToString("N");

Заранее благодарю

Отредактировано: Моя строка 123 как строка

Выходные данные;

PHP: 202cb962ac59075b964b07152d234b70

C#: 62b92c2059ac5b07964b07152d234b70

 21
Author: megazoid, 2011-04-28

1 answers

Ваша проблема здесь:

Guid r = new Guid(encodedBytes);
string hashString = r.ToString("N");

Я не уверен, почему вы загружаете свои закодированные байты в идентификатор Guid, но это неправильный способ преобразования байтов обратно в строку. Используйте BitConverter вместо:

string testString = "123";
byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(testString);
byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes);
string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower();
// hashString == 202cb962ac59075b964b07152d234b70
 34
Author: Juliet, 2011-04-28 18:41:25