You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:11