使用SHA256 + SHA512哈希密码?

Mr *_*r A 4 vb.net security passwords

我正在创建一个方法,我将用于散列密码以存储在数据库中.如果我的散列方法足够或者过度杀戮,我想寻求建议.

    Dim result As Byte()
    Dim mixer As String

    Try
        Dim sha As New SHA512CryptoServiceProvider

        mixer = txt_salt.Text.ToUpper + txt_pass.Text.Trim
        result = sha.ComputeHash(System.Text.Encoding.ASCII.GetBytes(mixer))

        txt_sha.Text = Convert.ToBase64String(result)
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
Run Code Online (Sandbox Code Playgroud)

谢谢.

小智 5

这是不够的.

  1. 没盐:
    • 易受彩虹表影响(如果散列出现哈希)
    • 解决方案:在域中使用随机
  2. 哈希太快了:
    • 容易受到蛮力(如果哈希泄漏)
    • 大多数哈希算法都设计得很快
    • 解决方案:bcrypt,scrypt或multiple(很多!!!)回合
  3. 没有HMAC:
    • 没有额外的"服务器秘密"(存储在db之外!)
    • 解决方案:hmac-sha1
  4. 不是经过充分测试的身份验证库/框架的一部分:
    • 这是一个"滚动你自己"的实现
    • 解决方案:不要重新发明轮子,除非它是这些其中之一 :)

就"位"而言,SHA1完全没有160(但由于其他原因,它本身并不好).同时执行SHA256 + SH512只会使零增益复杂化.(实际上,由于额外的存储要求,这是一个非常轻微的净损失.)

我建议使用现有的图书馆/系统,除非这是一个学术项目:)

快乐的编码.