使用方法
- 输入文本或十六进制字节,或打开文件计算其内容的哈希。
- 选择输出格式:十六进制适合 sha512sum 风格的校验值,Base64 适合完整性字符串。
- 把预期值粘贴到“对比”框进行校验,十六进制和 Base64 均可。
- 需要 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-384 | 384 位 | 96 | TLS 1.3 密码套件、子资源完整性 |
| SHA-512/256 | 256 位 | 64 | 以 SHA-512 的速度得到与 SHA-256 等长的输出 |
| SHA-512/224 | 224 位 | 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.is | 44960f483bc929874301e2fb54f4337c84641ad12cb6b2639875e26e490664e65da046cf43eafb2ab4a47b5d3eb66637630af5cba841974bfaa4e372dd0453d2 |
你好 | 5232181bc0d9888f5c9746e410b4740eb461706ba5dacfbc93587cecfc8d068bac7737e92870d6745b11a25e9cd78b55f4ffc706f73cfcae5345f1b53fb8f6b5 |
常见问题
SHA-512 比 SHA-256 更安全吗?
它的安全余量更大,抗碰撞强度约为 256 位,而 SHA-256 约为 128 位。不过两者都未被攻破,也都远超暴力破解的能力范围。当格式有要求、在你的硬件上更快或需要更长的摘要时选择 SHA-512,否则 SHA-256 已经足够。
SHA-512 可以解密吗?
不能。无论输入是一个单词还是整个磁盘镜像,SHA-512 摘要都固定为 64 字节,因此无数不同的输入会对应同一个摘要,根本无从解码。只能拿猜测值的哈希与它比对;查询网站正是用这种方法找出常用词和常见密码,但对不可预测的数据无能为力。
SHA-512 值有多长?
== 结尾。SHA3-512、BLAKE2b 和 Whirlpool 的长度也一样,把来历不明的摘要粘贴到哈希识别工具中,即可看到哪些算法符合。SHA-512 和 SHA3-512 一样吗?
不一样。SHA3-512(FIPS 202)基于 Keccak,是完全不同的设计,同一输入会得到不同的摘要。本页不计算 SHA-3。
为什么看起来相同的两段文字,哈希却不同?
哈希针对的是字节。像 é 这样的字符既可以存成一个码位,也可以存成 e 加组合重音符;末尾空格、换行符(LF 或 CRLF)和字符集(UTF-8、UTF-16、Windows-1252)也都会改变字节。请选择对方系统使用的“文本编码”,或直接以十六进制粘贴准确的字节。