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

时间:2009-12-01 21:02:45

标签: asp.net sql-server hash cryptography sha512

在我的ASP.NET网络应用程序中,我用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))

1 个答案:

答案 0 :(得分:15)

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

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

也就是说,ASP.NET有一个fairly comprehensive authentication system内置,你应该使用它。