SHA-512 哈希生成器

计算文本、十六进制字节或文件的 512 位 SHA-512 摘要,与预期值对比,并同时查看同一输入的 SHA-384、SHA-256、SHA-1、MD5 和 CRC-32。

全部算法

完全在浏览器中运行,不会上传任何数据。

使用方法

  1. 输入文本或十六进制字节,或打开文件计算其内容的哈希。
  2. 选择输出格式:十六进制适合 sha512sum 风格的校验值,Base64 适合完整性字符串。
  3. 把预期值粘贴到“对比”框进行校验,十六进制和 Base64 均可。
  4. 需要 SHA-384?在“算法”中选择它,或从“全部算法”表格中直接复制。

什么是 SHA-512?

SHA-512 是 SHA-2 家族中输出最长的函数,规范见 FIPS 180-4 和 RFC 6234。SHA-256 使用 32 位字,而 SHA-512 使用 64 位字、1024 位分块和 80 轮运算,输出 512 位摘要,即 128 个十六进制字符或 88 个 Base64 字符。它的抗碰撞强度约为 256 位,远超任何可预见的攻击能力。和所有哈希一样,它是单向的,无法从摘要还原输入。

由于采用 64 位运算,在没有 SHA-256 专用指令的 64 位处理器上,SHA-512 每字节的处理速度往往比 SHA-256 更快;而在具备这类指令的 CPU 上,通常还是 SHA-256 更快。

SHA-384、SHA-512/256 等截断版本

有几种标准哈希其实就是用不同的初始值运行 SHA-512,再截取较短的输出:

名称输出十六进制长度典型用途
SHA-384384 位96TLS 1.3 密码套件、子资源完整性
SHA-512/256256 位64以 SHA-512 的速度得到与 SHA-256 等长的输出
SHA-512/224224 位56较少使用

由于初始值不同,SHA-512/256 并不是 SHA-512 结果的前 64 个十六进制字符。截断版本还能抵御影响完整 SHA-256 和 SHA-512 的长度扩展攻击。本页可以计算 SHA-384 和 SHA-512;SHA-512/256 需要借助其他工具,例如 openssl dgst -sha512-256。

Base64 完整性字符串与密码哈希

SHA-512 的十六进制形式很长,因此面向机器的格式常用 Base64。子资源完整性(SRI)接受 sha256-、sha384- 和 sha512- 加 Base64 摘要的写法,npm 的 package-lock.json 也为每个软件包记录一个 integrity 值,通常以 sha512- 开头。打开文件,选择 Base64 输出,再加上前缀即可。

Linux 中以 $6$ 开头的密码哈希是 sha512crypt:对加盐的 SHA-512 重复计算数千次,所以它永远不会等于密码的普通 SHA-512。无论摘要多长,对密码只做一次 SHA-512 都很容易被暴力破解;存储密码请使用 Argon2id、scrypt、bcrypt 或 PBKDF2-HMAC-SHA512。

在命令行和代码中计算 SHA-512

sha512sum file.tar.gz                        # Linux
shasum -a 512 file.tar.gz                    # macOS
certutil -hashfile file.tar.gz SHA512        # Windows
Get-FileHash file.tar.gz -Algorithm SHA512   # PowerShell

# 生成用于 integrity 属性的 Base64 摘要
openssl dgst -sha512 -binary file.js | openssl base64 -A

# Python
hashlib.sha512(data).hexdigest()

// Node.js
crypto.createHash('sha512').update(data).digest('base64')

本页的 SHA-512 由浏览器内置的 Web Crypto API 计算,“全部算法”表格还会列出同一输入的 SHA-384、SHA-256、SHA-1、MD5 和 CRC 值。

编码示例

输入 (UTF-8)SHA-512
Hello, World!374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
Base64.is44960f483bc929874301e2fb54f4337c84641ad12cb6b2639875e26e490664e65da046cf43eafb2ab4a47b5d3eb66637630af5cba841974bfaa4e372dd0453d2
你好5232181bc0d9888f5c9746e410b4740eb461706ba5dacfbc93587cecfc8d068bac7737e92870d6745b11a25e9cd78b55f4ffc706f73cfcae5345f1b53fb8f6b5

常见问题

SHA-512 比 SHA-256 更安全吗?

它的安全余量更大,抗碰撞强度约为 256 位,而 SHA-256 约为 128 位。不过两者都未被攻破,也都远超暴力破解的能力范围。当格式有要求、在你的硬件上更快或需要更长的摘要时选择 SHA-512,否则 SHA-256 已经足够。

SHA-512 可以解密吗?

不能。无论输入是一个单词还是整个磁盘镜像,SHA-512 摘要都固定为 64 字节,因此无数不同的输入会对应同一个摘要,根本无从解码。只能拿猜测值的哈希与它比对;查询网站正是用这种方法找出常用词和常见密码,但对不可预测的数据无能为力。

SHA-512 值有多长?
64 字节:十六进制为 128 个字符,Base64 为 88 个字符,并以 == 结尾。SHA3-512、BLAKE2b 和 Whirlpool 的长度也一样,把来历不明的摘要粘贴到哈希识别工具中,即可看到哪些算法符合。
SHA-512 和 SHA3-512 一样吗?

不一样。SHA3-512(FIPS 202)基于 Keccak,是完全不同的设计,同一输入会得到不同的摘要。本页不计算 SHA-3。

为什么看起来相同的两段文字,哈希却不同?

哈希针对的是字节。像 é 这样的字符既可以存成一个码位,也可以存成 e 加组合重音符;末尾空格、换行符(LF 或 CRLF)和字符集(UTF-8、UTF-16、Windows-1252)也都会改变字节。请选择对方系统使用的“文本编码”,或直接以十六进制粘贴准确的字节。