SQL Server中存储哈希密码格式失真问题及搜索方向咨询
适合的搜索关键词
- SQL Server HASHBYTES 二进制转十六进制字符串
- SQL Server 存储哈希值为十六进制格式
- SQL Server CONVERT 二进制到十六进制 varchar
- SQL Server 密码哈希 二进制转可读十六进制
补充说明
HASHBYTES函数返回的是varbinary类型的二进制数据,直接赋值给varchar/nvarchar列时,数据库会把二进制数据按字符编码规则转成字符,而非你需要的十六进制文本格式,所以出现乱码。要保留十六进制格式,需要用CONVERT函数指定转换样式,示例代码:
declare @Pass as varchar(32) = 'Abc123()' -- 样式2返回不带0x前缀的64位十六进制字符串 select CONVERT(varchar(64), hashbytes('SHA2_256', @Pass), 2) -- 样式1返回带0x前缀的66位十六进制字符串 select CONVERT(varchar(66), hashbytes('SHA2_256', @Pass), 1)
存储到表时,将PasswordHash列设为varchar(64)(或char(64)),用上述转换后的结果插入即可。
内容的提问来源于stack exchange,提问作者Konrad Viltersten
相关产品推荐
相关产品推荐

