在我的ASP.NET web应用程序,我散列我的用户密码与SHA512。

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

时拿着它作为一个字符串来做到这一点的最好办法,如果是的话将它永远是一个SHA512 88个字符(如我看到的谷歌一些奇怪的东西)?

 Dim byteInput As Byte() = Encoding.UTF8.GetBytes(sSalt & sInput)
 Dim hash As HashAlgorithm = New SHA512Managed()
 Dim sInsertToDatabase As String =  Convert.ToBase64String(hash.ComputeHash(byteInput))
有帮助吗?

解决方案

SHA512输出512位,或64个字节。你可以存储在一个二进制列的64个字节,如果你愿意的话。

如果你要处理的散列外你的应用更舒适的存储Base64编码字符串,因为你现在做的事情。 BASE64增加大致恒定的开销的33%,所以可以期望该字符串为总是88个字符。

这就是说,ASP.NET具有相当全面的认证系统内置,其应该使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top