Я пробовал хэшировать строку в 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
Ваша проблема здесь:
Guid r = new Guid(encodedBytes); string hashString = r.ToString("N");
Я не уверен, почему вы загружаете закодированные байты в Guid, но это неверный способ преобразования байтов в строку. BitConverter
этого используйте 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