SHA-512/256哈希生成
使用我们的SHA-512/256哈希生成工具生成任意字符串输入的SHA-512/256哈希,确保数据完整性。

SHA-512/256哈希生成是一款免费工具,可根据任意输入字符串生成 SHA-512/256 哈希值。
什么是 SHA-512/256?
SHA-512/256 是一种密码学哈希算法,可为输入数据生成长度固定的 256 位指纹。它是单向算法,相同的输入会得到相同的 256 位摘要,而输入即使只有细微变化,通常也会产生截然不同的结果。SHA-512/256 哈希函数本身不使用密钥,也没有解密步骤。
SHA-512/256 属于 SHA-2 系列,由美国国家安全局设计,并于 2002 年首次由 NIST 标准化。SHA-512/256 变体于 2012 年加入 FIPS 180-4。它采用 SHA-512 的 64 位内部结构,但使用不同的初始值,最后返回 256 位摘要。因此,它并不是简单地把 SHA-512 截短到 256 位。
摘要大小为 32 字节,通常写成 64 个十六进制字符。SHA-512/256 仍适用于密码学哈希,目前没有已知的实用碰撞攻击或原像攻击。其预期碰撞抗性约为 128 位,原像抗性约为 256 位。

如何生成 SHA-512/256 哈希值?
准确输入需要计算哈希的字符串,然后使用 SHA-512/256 Hash 结果字段中显示的值。计算在服务器上进行。你的输入会通过 HTTPS 发送到服务器,但不会被存储。
除非规范明确要求截断,否则请复制完整的 64 字符摘要,不要只取其中一部分。例如,对字符串 invoice-1042 进行哈希计算,会得到一个以 64 个十六进制字符显示的 256 位值。对 Invoice-1042 进行哈希计算则会产生不同的值,因为字母大小写也是输入的一部分。
使用 SHA-512/256哈希生成时,请仔细检查输入的字符串,再使用计算结果。以下内容都是不同的字节序列,因此哈希值也各不相同:
- report
- Report
- report ,末尾带有空格
- report.,带有标点符号
- report,后面带有隐藏换行符

SHA-512/256 可以解密或逆向还原吗?
不可以。SHA-512/256 摘要无法解密,因为哈希并不是加密。摘要中不包含可恢复的原始字符串副本,也没有能够逆转计算过程的密钥。
不过,攻击者仍可以用 SHA-512/256 对可能的输入逐一计算哈希,再比较结果。因此,即使算法本身没有被逆向还原,简短、常见或容易预测的字符串仍容易受到字典搜索和暴力破解。这也是不能使用普通 SHA-512/256 哈希存储密码的原因之一。存储密码时,应使用 Argon2id、bcrypt 或 scrypt 等刻意降低计算速度并加盐的密码哈希方案,而不是这款工具输出的普通 SHA-512/256 哈希。

SHA-512/256 目前用于哪些场景?
当需要 256 位摘要且软件支持这一特定 SHA-2 变体时,可以使用 SHA-512/256。它基于 SHA-512 的内部结构,可能适合针对 64 位处理设计的实现,但实际性能取决于硬件和软件库。
- 校验和:用于检测文本、记录或文件是否发生意外变化。若要检测未经授权的更改,需要将结果与可信或受到独立保护的 SHA-512/256 摘要进行比较。
- 数据去重:用于识别很可能包含相同字节的记录或内容。应用程序仍应考虑理论上发生碰撞的可能性。
- 旧系统兼容:适用于现有文件格式、API、协议或数据库列明确指定 SHA-512/256 的情况。
- 密码学协议:适用于明确规定使用此算法生成数据摘要或构建受支持 HMAC 的协议。
不要因为 SHA-256 和 SHA-512/256 都返回 256 位结果,就用 SHA-256 替代 SHA-512/256。两种算法生成的摘要不同,算法名称也不同。同样,SHA-512/224哈希生成和 SHA-512哈希生成会生成不同长度的摘要,而 SHA-3/224哈希生成属于另一个哈希算法系列。
SHA-512/256 如何处理空格和 Unicode 文本?
SHA-512/256 对字节进行哈希,因此空格、标点、数字和字符编码都会影响结果。在 SHA-512/256哈希生成中输入数字时,工具会按数字的文本表示形式进行哈希。例如,从算法的角度看,42、042 和 42.0 是彼此无关的输入。
带重音符号的字符和非拉丁字符必须先编码为字节,通常使用 UTF-8。两个看起来相同的字符串,如果采用不同的 Unicode 表示方式,也可能生成不同的哈希值。一个带重音符号的字母既可能存储为单个码点,也可能存储为基础字母加组合标记。将本工具生成的 SHA-512/256 摘要与其他系统的结果比较前,请以一致的方式对文本进行规范化。
即使输入很长,最终也只会生成 256 位摘要。空输入也有明确定义的 SHA-512/256 摘要,不过界面中的空字段可能与有意提交的零长度字符串采用不同的处理方式。算法选择错误、编码不同以及普通的开头或末尾空白字符,都是校验和不匹配的常见原因。隐藏制表符、Windows 与 Unix 换行符差异,以及复制内容中包含的不换行空格,也可能导致结果不匹配。
常见问题
SHA-512/256 和 SHA-256 是一回事吗?
不是。两者都会返回 256 位摘要,但 SHA-256 采用 32 位内部结构,而 SHA-512/256 采用 SHA-512 的结构及其专用初始值。同一输入使用这两种算法时,会得到不同的输出。
SHA-512/256 只是截短后的 SHA-512 哈希吗?
不是。SHA-512/256 使用不同的初始哈希值,因此其输出并非普通 SHA-512 摘要的前 256 位。所以,直接截短 SHA-512 无法通过要求使用 SHA-512/256 的兼容性检查。
十六进制字母的大小写会改变哈希值吗?
不会改变摘要字节。对于 SHA-512/256 摘要,大写和小写十六进制文本可以表示相同的摘要字节。不过,区分大小写的数据库或字符串比较可能会把这两种写法视为不同值,因此整个系统应统一使用约定好的格式。
两个不同的输入可能得到相同的 SHA-512/256 摘要吗?
理论上可以,因为无限多种可能的输入会被映射到数量固定的输出。这样的输入对称为碰撞。目前没有已知的 SHA-512/256 实用碰撞攻击,但应用程序不应假定哈希值在数学上绝对唯一。
可以把 SHA-512/256 用作消息认证码吗?
不能直接这样使用。不要通过在消息前添加秘密值并对组合文本进行哈希来创建 MAC。需要使用密钥进行认证时,请采用标准的 HMAC-SHA-512/256 实现。
最后检查
比较本工具生成的摘要前,请确认另一个值同样使用 SHA-512/256,并采用相同的输入编码和十六进制格式。删除无意加入的空格或换行符,但不要改动原本就应包含这些字符的文本。对于敏感输入,请注意,本工具会通过 HTTPS 将该值发送到服务器进行处理,但不会存储该值。