在数据库中存储SHA512密码哈希

Chr*_*ris 10 sql-server asp.net hash cryptography sha512

在我的ASP.NET Web应用程序中,我用SHA512哈希我的用户密码.

尽管SO'ing和谷歌搜索很多我不清楚我应该如何将它们存储在数据库中(SQL2005) - 下面的代码显示了我如何创建哈希作为字符串的基础知识我现在正在将其插入到将数据库放入Char(88)列,因为它似乎是一致创建的长度

将它作为String保存是最好的方法,如果是这样的话,SHA512上总会有88个字符(因为我在Google上看到了一些奇怪的东西)?

 Dim byteInput As Byte() = Encoding.UTF8.GetBytes(sSalt & sInput)
 Dim hash As HashAlgorithm = New SHA512Managed()
 Dim sInsertToDatabase As String =  Convert.ToBase64String(hash.ComputeHash(byteInput))
Run Code Online (Sandbox Code Playgroud)

Vin*_*vic 15

SHA512输出512位或64字节.如果您愿意,可以将这64个字节存储在二进制列中.

如果你想在你的应用程序之外处理哈希,那么存储Base64字符串会更加舒适,正如你现在所做的那样.Base64大约增加了33%的常量开销,因此您可以期望字符串始终为88个字符.

也就是说,ASP.NET内置了一个相当全面的身份验证系统,您应该使用它.

  • 感谢@Vinko 的所有澄清 - 我喜欢拥有安全模型并确切了解发生了什么,并且知道我可以随时将密码的可用性从 ASP.NET 中移出 - 我以前被咬过. 也许被误导了,当然不是说我是一个控制狂或任何东西;) (2认同)