Обе страницы MD5, которые вы показали, описывают MD5 как операцию, которая работает со строками.Это не - это операция, которая работает с последовательностями byte .Чтобы преобразовать строку в последовательность байтов, вам нужно использовать кодировку .
Вы выбрали Encoding.Default
, что почти всегда является плохим выбором - я бы, как правило,выберите Encoding.UTF8
.Однако, что важно, ни один из этих сайтов не говорит, что они используют.Однако в реальной жизни я бы надеялся , что вы либо будете иметь контроль над обоими процессами хеширования (при условии, что их действительно два), либо что любой код хэширования, который вы не контролируете, будет указывать, какую кодировку использовать.
Обратите внимание, что существует более простой способ создания экземпляра MD5
- просто используйте MD5.Create
.Вы также должны обычно помещать его в оператор using
, поскольку он реализует IDisposable
:
private static string GetMD5Hash(string text)
{
if (string.IsNullOrEmpty(text))
{
return "";
}
using (var md5 = MD5.Create())
{
byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(text));
return BitConverter.ToString(hash).Replace("-", "").ToLower();
}
}