這裏是C#如何在C#和Ruby中匹配輸出格式MD5哈希字符串?
public static string GetMD5Hash(string input)
{
System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
return s.ToString();
}
下面的代碼的Ruby代碼
def getMD5Hash(str)
bs = Digest::MD5.digest(str.encode('UTF-8')).bytes.to_a
bs = bs.map { |b| b.to_s(16).downcase }
str_bs = bs.join
return str_bs
end
當我運行Ruby代碼和C#代碼相同的字符串加密,從Ruby的結果是不一樣的結果如C#提供。 如何修改Ruby代碼?非常感謝
的C#示例使用UTF8但Ruby例如使用UTF-16。你爲什麼期望他們是一樣的? – Martheen 2015-03-13 06:37:01
我修改了編碼爲UTF8,但它不一樣。謝謝 – 2015-03-13 06:52:04