首页 > 解决方案 > SQL 服务器。密码哈希的数据类型 (sha 512)

问题描述

想知道为我的 SQL Server 选择哪种数据类型来存储 sha512 密码哈希。(散列值将始终具有固定长度)

 declare @hashedPasswd varchar(max)
 set @hashedPasswd = convert(varchar(max), HASHBYTES('SHA2_512', 'any password with any langth'), 1)
 select len (@hashedPasswd)

总是返回 130 的长度。

列的数据类型的最佳选择是什么?变体是 nvarchar(max)、nvarchar(130)、varchar、char。如果我理解正确,在我的情况下 nvarchar 是浪费空间,因为它只是散列值中的 ASCII 符号。

请协助。

标签: sql-servertsqlpassword-hash

解决方案


SHA2_512 是 64 字节长,内部是一个 varbinary,所以我建议改用这个数据类型。为了更安全,我还建议使用额外的盐来加密和解密密码。您可以在此处找到有用的描述: https ://www.mssqltips.com/sqlservertip/4037/storing-passwords-in-a-secure-way-in-a-sql-server-database/

最好的问候,斯蒂芬


推荐阅读