如何将Ruby的SHA512.hexdigest转换为C#?

时间:2011-02-09 09:44:44

标签: c# ruby security hash

我正在用C#重写一个Rails Web应用程序。我真的厌倦了Ruby的哈希函数:

# Generates a 128 character hash
def Password.hash(password,salt)
  Digest::SHA512.hexdigest("#{password}:#{salt}")
end

以下C#函数给出了不同的结果:

 private static string Hash(string password, string salt)
 {
     return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(password + ":" + salt))).Replace("-", "").ToLower();
 }

我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:6)

没关系。结果实际上 ARE 相同。因此,如果您需要将Ruby的散列转换为C#,

Digest::SHA512.hexdigest(some_string)

相同
BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(someString))).Replace("-", "").ToLower();

C#更冗长,但最重要的是它有效! :)