Хеширование 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
Ответы
Ответ 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