【发布时间】:2011-03-23 05:57:54
【问题描述】:
什么是从 C# 中使用的好的密码哈希算法,如果稍后您可能知道 Java 和 Ruby 程序可能还需要“登录”/验证用户。 .NET 中开箱即用的任何东西,可以很好地翻译成其他语言并且易于使用。
【问题讨论】:
标签: c# java ruby cross-platform hash
什么是从 C# 中使用的好的密码哈希算法,如果稍后您可能知道 Java 和 Ruby 程序可能还需要“登录”/验证用户。 .NET 中开箱即用的任何东西,可以很好地翻译成其他语言并且易于使用。
【问题讨论】:
标签: c# java ruby cross-platform hash
NSA/NIST 标准化的最强加密哈希算法是 SHA-512。
确保使用每个密码的随机盐(由强大的加密随机数生成器生成的 128 位盐很好)。或者,更好的是,确保使用每个密码的随机密钥(同样由加密随机生成),并使用 HMAC-SHA-512。请务必使用多次迭代 - 4096 和 65,536 是很好的整数(2^12 和 2^16)。
let h = get_hash_hunction("SHA-512")
let k = get_key_for_user("Justice")
let hmac = get_hmac(h, k)
let test = get_bytes("utf-8", http_request_params["password"])
for(i in 0 .. (2^16 - 1))
let test = run_hmac(hmac, test)
return test == get_hashed_password_for_user("Justice")
【讨论】:
正确使用添加了盐的 MD5 会使彩虹表和蛮力相当昂贵。因此,使用 md5 的评论非常有效。
【讨论】:
认为 MD5 是最常见的。
【讨论】: