这里是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