Подтвердить что ты не робот

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

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

мой код на С# выглядит как

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

С#: 62b92c2059ac5b07964b07152d234b70

4b9b3361

Ответ 1

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

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