C#/Java/Ruby - 密码哈希算法 - 跨语言/平台

标签 c# java ruby cross-platform hash

如果以后您可能知道 Java 和 Ruby 程序也可能需要“登录”/验证用户身份,那么 C# 中可以使用什么好的密码哈希算法呢? .NET 中任何开箱即用的东西都可以很好地转换为其他语言并且易于使用。

最佳答案

NSA/NIST 标准化的最强加密哈希算法是 SHA-512。

请务必使用每个密码的随机盐(由加密性强的随机数生成器生成的 128 位盐是好的)。或者,更好的是,确保使用每个密码的随 secret 钥(同样由 cryptorandom 生成),并使用 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")

关于C#/Java/Ruby - 密码哈希算法 - 跨语言/平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371660/

相关文章:

c# - 使用 Mono.Cecil 从 ByReferenceType 获取通用参数

c# - 使用 LINQ 将三个列表连接成一个会引发异常

java - 如何使 JPanel 项目位于同一 BorderLayout 中的另一个项目下?

java - Spring 和 Javax RS REST API 中继承时序列化 JSON 的差异

ruby - 将 Curl 请求转换为 Net::HTTP 时出错

c# - IntPtr 到字节数组并返回

c# - 从 GridView TemplateField 调用 Javascript

java - 服务程序 : Image upload with content type as image/jpeg

ruby-on-rails - 从 Ruby 变量中去除空格的万无一失的方法?

ruby 匹配字符串到字符串数组