MD5 hashing does not match in C# and PHP

后端 未结 2 1463
一个人的身影
一个人的身影 2020-12-16 10:10

I have tried hashing a string in PHP using MD5 and the same in C#, but the results are different.. can someone explain me how to get this matched?

my C# code looks l

相关标签:
2条回答
  • 2020-12-16 10:46

    Your problem is here:

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

    I'm not sure why you're loading your encoded bytes into a Guid, but that is not the correct way to convert bytes back to a string. Use BitConverter instead:

    string testString = "123";
    byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(testString);
    byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes);
    string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower();
    // hashString == 202cb962ac59075b964b07152d234b70
    
    0 讨论(0)
  • 2020-12-16 11:01

    The solution from Juliet didn't give me the same result as a PHP hash I was comparing against (produced by Magento 1.x), however the following did, based on this implementation on github:

                    using (var md5 = MD5.Create())
                    {
                        result = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(input)))
                            .Replace("-", string.Empty).ToLower();
                    }
    
    0 讨论(0)
提交回复
热议问题