引用的代碼是從this answer,但類似的代碼幾乎無處不在。假設我們需要使用接受byte[]
的System.Security.Cryptography.HashAlgorithm.ComputeHash()
方法的實現來散列C#字符串內容。典型的代碼如下所示:爲什麼散列字符串的樣本通常使用Encoding.UTF8?
public static byte[] GetHash(string inputString)
{
HashAlgorithm algorithm = MD5.Create(); // SHA1.Create()
return algorithm.ComputeHash(Encoding.UTF8.GetBytes(inputString));
}
字符串在內部以Unicode存儲。
爲什麼使用Encoding.UTF8
代替Encoding.Unicode
?
對不起,但我不明白這個問題的客觀答案是如何存在的。 – Jon
@Jon:「真的沒有意義」或「如果您使用'Encoding.Unicode'這些和這些不好的事情發生」。 – sharptooth
以上都不是。這是一個任意的選擇。實際選擇很重要的唯一方式是計算這些散列的* all *代碼必須使用相同的編碼,否則它們顯然會將相同的輸入散列到不同的值。 – Jon