Sql server SQL Server。密码哈希的数据类型(sha 512)
不知道要为我的SQL Server选择哪个数据类型来存储sha512密码哈希。(哈希值将始终具有固定长度)Sql server SQL Server。密码哈希的数据类型(sha 512),sql-server,tsql,password-hash,Sql Server,Tsql,Password Hash,不知道要为我的SQL Server选择哪个数据类型来存储sha512密码哈希。(哈希值将始终具有固定长度) declare@hashedPasswd varchar(最大值) set@hashedPasswd=convert(varchar(max),HASHBYTES('SHA2_512','anypassword with any langth'),1) 选择len(@hashedPasswd) 始终返回长度130 列的数据类型的最佳选择是什么? 变体有nvarchar(最大)、nvarc
declare@hashedPasswd varchar(最大值)
set@hashedPasswd=convert(varchar(max),HASHBYTES('SHA2_512','anypassword with any langth'),1)
选择len(@hashedPasswd)
始终返回长度130
列的数据类型的最佳选择是什么?
变体有nvarchar(最大)、nvarchar(130)、varchar、char。
如果我理解正确,在我的例子中,nvarchar是一种浪费空间的行为,因为它在散列值中只是ASCII符号
请协助。SHA2_512的长度为64字节,内部包含一个varbinary,因此我建议改用此数据类型。 为了更安全,我还建议使用额外的salt进行密码加密和解密。您可以在此处找到有用的说明:
请注意,StephanSHA2_512的长度为64字节,内部为varbinary,因此我建议改用此数据类型。 为了更安全,我还建议使用额外的salt进行密码加密和解密。您可以在此处找到有用的说明: 最好的问候,Stephan根据,
hasbytes
返回一个varbinary
,因此您的数据类型是varbinary
您的长度为130只是因为您正在强制转换为varchar,并且存储它的方式效率低下。从文档中,sha512返回64个字节,因此所需的长度为64
declare @hashedPasswd varbinary(max)
set @hashedPasswd = HASHBYTES('SHA2_512', 'any password with any length')
select len (@hashedPasswd)
根据hasbytes返回一个varbinary
,因此您的数据类型是varbinary
您的长度为130只是因为您正在强制转换为varchar,并且存储它的方式效率低下。从文档中,sha512返回64个字节,因此所需的长度为64
declare @hashedPasswd varbinary(max)
set @hashedPasswd = HASHBYTES('SHA2_512', 'any password with any length')
select len (@hashedPasswd)
为什么要使用
varchar
HASHBYTES
返回长度最多为8000的varbinary
。sha_512是哈希算法。据我所知,散列值总是130 SYMBOLS为什么要使用varchar
HASHBYTES
返回长度最多为8000的varbinary
。sha_512是哈希算法。据我所知,哈希值总是130个符号