1
我試圖練習C#編程。我試圖計算字符串「a」的MD5.has。但是,如何解決這個代碼,因爲它輸出4144e195f46de78a3623da7364d04f11而不是0cc175b9c0f1b6a831c399e269772661?如何在C#中計算「a」的MD5散列?
//Title of this code
//Rextester.Program.Main is the entry point for your code. Don't change it.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Text;
using System.Security.Cryptography;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
string a="a";
Console.WriteLine(CalculateMD5Hash(a));
Console.ReadKey();
}
public static string CalculateMD5Hash(string input)
{
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] retval = md5.ComputeHash(Encoding.Unicode.GetBytes(input));
StringBuilder sb = new StringBuilder();
for (int i=0;i<retval.Length;++i)
{
sb.Append(retval[i].ToString("x2"));
}
return sb.ToString();
}
}
}
}
文本的編碼是否相同? –
事實上:散列算法通常用於* binary *數據,而不是文本。你在這裏將文本轉換爲字節:'Encoding.Unicode.GetBytes(input)'。我的猜測是,使用'Encoding.Utf8'而不是'Encoding.Unicode'會給你你想要的答案,但是你需要明白「a」的MD5哈希值沒有被定義,因爲*「a」是文本,而不是字節。 –