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

为何C#生成的空字符串SHA256 Base64哈希与常见值不同?

空字符串SHA256哈希Base64差异的原因

核心问题是处理对象搞混了:

  • 你提到的e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855是空字符串SHA256哈希的十六进制文本表示,而对应的错误Base64ZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NQ==,是把这个十六进制字符串本身转成UTF-8字节后再做Base64编码的结果——这根本不是哈希值的Base64,而是哈希的十六进制文本的Base64。

你的C#代码是完全正确的:

  • 当content为空字符串时,Encoding.UTF8.GetBytes(content)返回长度为0的字节数组,SHA256对空字节数组计算哈希,得到的原始字节数组正好对应上面的十六进制字符串。直接对这个哈希字节数组做Base64编码,得到的47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=才是空字符串SHA256哈希的标准Base64表示。

简单说,你看到的错误结果是把「哈希的十六进制文本」当成「哈希原始字节」来转Base64了,和规范的哈希Base64完全不是一回事。


内容的提问来源于stack exchange,提问作者WirelessG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:52:49