SHA256 是一种哈希(散列)算法,把任意长度的数据计算成固定 256 位(32 字节)的摘要,通常写成 64 位十六进制字符串。下面重点说明标准规定与要点。
SHA256规则
- 输入是字节:同一段中文按 UTF-8 和 GBK 计算,结果不同
- 输出通常用小写十六进制表示,大小写不影响比较
- 也可以用 Base64 表示(32 字节编码为 44 个字符)
- 比较两个摘要时应使用常量时间比较函数,防止时序攻击
示例
输入:Man
计算结果:20fe1bd201cd900bdbffeaec0b42e40b51cbf6b37ae5fbeaddd83aab9a221837
说明:对 UTF-8 字节计算 SHA256。
JavaScript 示例
下面是 JavaScript 中处理SHA256的常用写法:
// 浏览器 Web Crypto(支持 SHA-1/SHA-256,不支持 MD5)
const buf = await crypto.subtle.digest("SHA-256", new TextEncoder().encode("abc"));
const hex = [...new Uint8Array(buf)].map(b => b.toString(16).padStart(2, "0")).join("");
// Node.js
require("crypto").createHash("sha256").update("abc").digest("hex");运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
中文的处理
中文先转成字节再计算。按 UTF-8,“中文”是 6 个字节,SHA256 为 72726d8818f693066ceb69afa364218b692e62ea92b385782363780f47529c21;按 GBK 是 4 个字节,结果为 9485702c85d23d7480e5b7d215e75d3a4cb0196265a5959c718288255553eb23,两者完全不同。
本站的SHA哈希计算器工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【空字符串的 SHA256 是多少?】e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855。
【SHA256 能解密吗?】不能。SHA256 是单向哈希,没有密钥也没有逆运算;所谓解密是查已知明文的对照表,只对简单字符串有效。
【SHA256 是多少位?】256 位,即 32 字节,写成十六进制是 64 个字符。
文中示例可以在本站对应工具中验证;处理密码、证件号等敏感数据时,请注意保护隐私。