SHA-512哈希生成器

从任意文本生成SHA-512哈希值

输入文本

本地运行 · 粘贴密钥安全无忧

SHA-512哈希值

SHA-512哈希值将显示在此处…

什么是SHA-512哈希?

SHA-512是一种密码学哈希函数,由NIST在FIPS 180-4中定义,是SHA-2家族中最大的成员。它接受任意长度的输入,生成固定512位(64字节)的消息摘要,以128个十六进制字符的形式呈现。SHA-512广泛应用于数字签名(Ed25519内部使用SHA-512)、HMAC构造、文件完整性验证,以及需要较大安全余量的密码学协议。

SHA-512以1024位(128字节)为块进行处理,使用64位字运算和80轮压缩。其八个初始哈希值来源于前八个质数的平方根小数部分,80个轮常量来源于前80个质数的立方根小数部分。由于使用原生64位运算,即便产生更长的摘要,SHA-512在现代64位处理器上的速度通常也快于SHA-256。

SHA-384、SHA-512/224和SHA-512/256均为SHA-512的截断变体,共享相同的内部结构,但使用不同的初始哈希值并输出更少的位数。当需要SHA-2家族最大的摘要长度,或协议明确要求SHA-512(如Ed25519或某些基于HMAC的密钥派生方案)时,SHA-512是正确选择。它提供256位碰撞抵抗,与SHA-3-512相当,远超SHA-256的128位界限。

为什么使用在线SHA-512生成器?

计算SHA-512哈希通常需要终端命令或几行代码。这个基于浏览器的工具让你无需安装软件、切换终端或编写临时脚本,即可即时生成SHA-512摘要。

浏览器即时计算
粘贴或输入任意文本,立即获得完整的128字符SHA-512哈希值。Web Crypto API在浏览器中原生处理计算,无需任何JavaScript库开销。
🔒
隐私优先的哈希处理
你的输入永远不会离开你的设备。所有哈希计算均通过浏览器内置的Web Crypto API在本地运行,不向任何服务器传输数据,不记录日志,不保留数据。
📋
可直接复制的输出格式
一键切换小写或大写十六进制输出。适用于对比来自包管理器、SBOM清单或安全文档的校验和。
🔍
无需账号或安装
支持所有主流浏览器——Chrome、Firefox、Safari、Edge。无需注册、无需扩展程序、无需配置命令行工具。打开页面即可开始哈希计算。

SHA-512哈希生成器使用场景

前端开发者 — Ed25519签名调试
Ed25519内部使用SHA-512派生签名密钥并计算消息摘要。在实现或调试Ed25519签名流程时,对测试载荷生成SHA-512哈希以验证中间值。
后端工程师 — HMAC-SHA512校验
Webhook系统和API认证方案(OAuth 1.0a、部分支付网关)使用HMAC-SHA512进行消息签名。在开发过程中计算参考SHA-512哈希值,以交叉验证你的HMAC实现。
DevOps — 制品与二进制文件验证
在部署到生产环境前,验证下载的二进制文件、容器镜像或固件的SHA-512校验和。许多Linux发行版在ISO镜像旁提供SHA-512校验和文件。
QA工程师 — FIPS 180-4测试向量验证
将SHA-512输出与来自密码算法验证程序(CAVP)的NIST测试向量进行交叉核对,确认你的哈希实现正确处理了填充和边界情况。
数据工程师 — 大键值指纹生成
使用SHA-512对复合键或大型记录载荷进行哈希,生成确定性指纹,用于数据管道中的去重。512位输出即便面对数十亿条记录,也能将碰撞风险降到最低。
学生 — 探索雪崩效应
修改输入中的单个字符,观察整个128字符SHA-512输出如何不可预测地发生变化。这演示了使哈希函数在密码学中发挥作用的雪崩特性。

SHA-2家族变体对比

SHA-512属于FIPS 180-4定义的SHA-2家族。下表对比了与SHA-512共享64位内部架构的SHA-2变体,并以SHA-256作为参照。

变体摘要长度十六进制长度字节大小适用场景
SHA-256256 bits64 hex chars32 bytesTLS certificates, blockchain, JWTs, SRI
SHA-384384 bits96 hex chars48 bytesTLS 1.3 CertificateVerify, CNSA/Suite B
SHA-512512 bits128 hex chars64 bytesDigital signatures, HMAC, Ed25519, file integrity
SHA-512/224224 bits56 hex chars28 bytesSHA-512 speed on 64-bit CPUs, 224-bit output
SHA-512/256256 bits64 hex chars32 bytesSHA-512 speed on 64-bit CPUs, 256-bit output

SHA-512 与 SHA-256、SHA-384、SHA-3-512 对比

选择合适的哈希算法取决于你的安全需求、性能约束和协议规范。SHA-512在SHA-2家族中提供最宽的摘要,且在64位硬件上通常比SHA-256更快。以下对比涵盖了做出选择时最关键的属性。

属性SHA-512SHA-256SHA-384SHA-3-512
Digest size512 bits (128 hex)256 bits (64 hex)384 bits (96 hex)512 bits (128 hex)
Block size1024 bits512 bits1024 bits1600 bits (sponge)
Word size64 bits32 bits64 bitsN/A (sponge)
Rounds80648024
Collision resistance2^256 operations2^128 operations2^192 operations2^256 operations
Security statusSecureSecureSecureSecure
StandardFIPS 180-4FIPS 180-4FIPS 180-4FIPS 202
Web Crypto APIYesYesYesNo
64-bit optimizedYesNo (32-bit words)YesYes
Primary use todayEd25519, HMAC, file checksumsTLS, blockchain, SRITLS 1.3, CNSABackup standard

SHA-512的内部工作原理

SHA-512通过Merkle–Damgård构造处理输入,使用1024位块。它初始化八个64位状态字(H0–H7),来源于前八个质数的平方根小数部分。每个块经过80轮混合运算,这些运算对64位字使用按位操作(AND、XOR、NOT、右旋转、右移位),并结合来自前80个质数立方根的80个轮常量。

Input: "hello world"
SHA-512: 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f
989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
(512 bits = 64 bytes = 128 hex characters)
步骤描述
PaddingAppend a 1-bit, then zeros until the message length is 896 mod 1024. Append the original length as a 128-bit big-endian integer.
Block splittingDivide the padded message into 1024-bit (128-byte) blocks.
Message scheduleExpand each 16-word (64-bit) block into 80 words using sigma functions with right-rotate and right-shift operations on 64-bit values.
CompressionProcess 80 rounds per block using Ch, Maj, and two Sigma functions with 80 round constants derived from the cube roots of the first 80 primes.
OutputConcatenate the eight 64-bit state words (H0–H7) into a 512-bit (64-byte) digest, rendered as 128 hexadecimal characters.

更宽的64位字大小是与SHA-256的关键区别。在64位CPU上,每次操作处理的位数是SHA-256的两倍,这正是为什么SHA-512在基准测试中经常优于SHA-256,尽管其运行80轮而非64轮。雪崩效应确保翻转单个输入位会改变512个输出位中约50%的位。

SHA-512代码示例

SHA-512在每种主流语言和运行时中均原生支持。Web Crypto API无需任何库即可在浏览器中提供该功能。以下示例涵盖了常见模式,包括Unicode处理和文件哈希。

JavaScript (Web Crypto API)
// Works in all modern browsers and Node.js 18+
async function sha512(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-512', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha512('hello world')
// → "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha512').update('hello world').digest('hex')
// → "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f"
Python
import hashlib

# Basic SHA-512 hash
result = hashlib.sha512(b'hello world').hexdigest()
print(result)
# → "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee..."

# Hash a string with Unicode (encode to bytes first)
text = 'café ☕'
hashlib.sha512(text.encode('utf-8')).hexdigest()
# → 128-character hex string

# Hash a large file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
    sha = hashlib.sha512()
    for chunk in iter(lambda: f.read(8192), b''):
        sha.update(chunk)
    print(sha.hexdigest())
Go
package main

import (
    "crypto/sha512"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha512.Sum512(data)
    fmt.Printf("%x\n", hash)
    // → 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f...
}
CLI (Linux / macOS)
# Using sha512sum (Linux) or shasum (macOS)
echo -n "hello world" | sha512sum
# → 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee...  -

# macOS
echo -n "hello world" | shasum -a 512
# → 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee...  -

# Verify a file checksum
echo "309ecc48...  myfile.bin" | sha512sum -c
# → myfile.bin: OK

# Using openssl (cross-platform)
echo -n "hello world" | openssl dgst -sha512
# → SHA2-512(stdin)= 309ecc489c12d6eb4cc40f50c902f2b4...

常见问题

SHA-512比SHA-256更安全吗?
基于生日攻击界(摘要长度的一半),SHA-512提供256位碰撞抵抗,而SHA-256为128位。对于原像抵抗,SHA-512提供512位 vs. 256位。截至2026年,两者均被认为能抵御所有已知攻击,但SHA-512提供了更大的安全余量。实际上,SHA-256的128位碰撞抵抗已远超当前计算能力所能破解的范围。
SHA-512比SHA-256慢吗?
在64位处理器上,SHA-512通常比SHA-256更快,因为它以原生64位字为单位运算。在32位或嵌入式系统上,SHA-512较慢,因为每次64位操作都必须用多条32位指令来模拟。对于大多数现代桌面、服务器和移动CPU(均为64位),SHA-512的吞吐量与SHA-256相当甚至更高。
SHA-512和SHA-512/256有什么区别?
SHA-512/256使用与SHA-512相同的内部算法(1024位块、80轮、64位字),但以不同的初始哈希值开始,并将输出截断为256位。这使你能在64位硬件上获得SHA-512的速度,同时拥有SHA-256大小的输出。SHA-512/256还天然具备对长度扩展攻击的抵抗能力,因为截断会丢弃攻击者所需的内部状态。
Ed25519为什么使用SHA-512?
Ed25519签名方案在两处使用SHA-512:首先从32字节私钥种子派生256位签名标量和随机数前缀,然后在签名过程中对消息进行哈希。选择SHA-512是因为它提供512位输出,可以拆分为两个256位的一半,其64位运算与Curve25519的255位曲线算术相契合。
SHA-512可以被逆向以还原原始输入吗?
不能。SHA-512是具备512位原像抵抗能力的单向函数。没有已知方法能比穷举2^512种可能性更快地还原输入——这个数字比可观测宇宙中的原子数量还要大。然而,简短或可预测的输入可以通过字典攻击找到,这正是为什么密码应使用bcrypt或Argon2等专用密钥派生函数,而非直接使用SHA-512。
Web Crypto API支持SHA-512吗?
支持。所有现代浏览器均通过crypto.subtle.digest('SHA-512', data)实现SHA-512。这与本工具所使用的API相同。Node.js 18+、Deno和Bun中同样可用。Web Crypto API返回一个ArrayBuffer,需通过将每个字节映射为两位十六进制字符来转换为十六进制字符串。
什么情况下应该使用SHA-512而不是SHA-256?
当协议要求使用SHA-512(Ed25519、某些HMAC方案)、需要超过128位的碰撞抵抗,或在64位硬件上追求最大吞吐量时,应选择SHA-512。SHA-512也适用于文件完整性校验和(在较长摘要可以接受的情况下),因为更宽的哈希空间降低了超大数据集中偶发碰撞的概率。对于大多数Web应用、API和TLS,SHA-256仍是标准默认选择。