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

如何在SQL中将哈希HEX值转换为对应C#的Base64格式?

解决方案:SQL中将HEX哈希字符串转换为Base64格式

要实现和C# Convert.ToBase64String(hash)完全一致的Base64转换结果,你需要分两步操作:先将HEX字符串转回二进制数据,再将二进制数据转换为Base64格式。

完整SQL示例

declare @Pass as varchar(max) = 'abc'
declare @HexPass as varchar(max) = convert(varchar(max), hashbytes('SHA2_512', @Pass), 2)

-- 第一步:将HEX字符串转为二进制数据
declare @BinaryHash varbinary(max) = CONVERT(varbinary(max), @HexPass, 2)
-- 第二步:将二进制数据转为Base64字符串
declare @Base64Pass varchar(max) = CAST('' AS xml).value('xs:base64Binary(sql:variable("@BinaryHash"))', 'varchar(max)')

-- 输出对比结果
select 
    @Pass as PlainText,
    @HexPass as HexHash,
    @Base64Pass as Base64Hash

关键步骤说明

  1. HEX转二进制
    使用CONVERT(varbinary(max), @HexPass, 2),其中style=2表示输入的HEX字符串不带0x前缀,和你生成@HexPass时的参数保持一致(你用convert(varchar(max), hashbytes(...), 2)生成不带前缀的HEX)。

  2. 二进制转Base64
    借助SQL Server对XML类型的支持,通过CAST('' AS xml).value(...)方法,将二进制数据转换为xs:base64Binary类型,再提取为字符串格式。这一步是实现Base64转换的核心。

结果验证

运行上述SQL后,@Base64Pass的值会和你C#代码中的expectedResult完全一致:
3a81oZNherrMQXNJriBBMRLm+k6JqX6iCp7u5ktV05ohkpkqJ0/BqDa6PCOj/uu9RU1EI2Q86A4qmslPpUyknw==

内容的提问来源于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.14 05:53:26