9

在我的 ASP.NET Web 应用程序中,我使用 SHA512 对我的用户密码进行哈希处理。

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

将它作为字符串保存是最好的方法吗,如果是这样,它在 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))
4

1 回答 1

14

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

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

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

于 2009-12-01T21:15:38.460 回答