X114

密码学哈希计算与文件校验和工具

API 即将上线

在浏览器中即时计算文本与本地大文件的 SHA-256、SHA-512、SHA-384、SHA-1、MD5 及 HMAC 签名。基于 Web Crypto 原生加速,零网络上传。

Cryptographic Hash Generator & File Checksum

Instant Scenario Presets
Calculated HashesClick copy button to copy hex digest
SHA-256(256-bit)Standard
—
SHA-512(512-bit)High-Security
—
SHA-384(384-bit)High-Security
—
SHA-1(160-bit)Legacy
—
MD5(128-bit)Broken
—

API 版本即将上线

Hash Generator API 上线时通知你。

关于

本密码学哈希计算与文件校验和套件依托浏览器底层原生 Web Crypto API (SubtleCrypto) 与工业级标准算法,提供纯前端的高性能哈希摘要计算、HMAC 签名与本地大文件完整性校验。所有数据计算 100% 运行在您的本机浏览器内存中,绝不向任何第三方或云端服务器上传敏感明文或文件流。


密码学散列函数的核心原理与 FIPS 国际标准

密码学散列函数(Cryptographic Hash Function)是一种确定性的数学单向映射算法,能将任意长度的二进制输入转换为固定长度的比特串(摘要)。其必须严格满足三大密码学特征:

  1. 抗原像性(单向性 / One-Way Property):已知散列值 $h$,在数学计算上无法推导逆运算还原出原始输入数据 $m$。哈希是不可逆的单向摘要,而非对称解密。
  2. 抗第二原像性(弱抗碰撞性):已知输入 $m_1$,无法在有效算力内构造出另一个不同的输入 $m_2$ 使得二者哈希值相同。
  3. 强抗碰撞性(Collision Resistance):无法在可行算力内找到任意两组不同的输入 $m_1 \neq m_2$,使其产生完全相同的散列摘要。
  4. 雪崩效应(Avalanche Effect):原始输入只要发生 1 个比特位的微小改动,输出散列值的约 50% 比特位将发生剧烈且不可预测的变化。

主流密码学散列算法横向对比与 NIST 安全评级

算法名称 国际标准规范 输出摘要长度 理论碰撞安全强度 NIST 安全合规状态 工业界核心应用场景
SHA-256 Secure Hash Standard (FIPS 180-4) 256 比特 (64 字符十六进制) > 2^128 次运算 推荐安全标准 (工业基石) 比特币区块链、TLS/HTTPS 证书链、Git 安全仓库、Docker 镜像层
SHA-512 Secure Hash Standard (FIPS 180-4) 512 比特 (128 字符十六进制) > 2^256 次运算 推荐安全标准 (高强度) 64 位 CPU 架构高性能校验、GPG 数字签名、Linux shadow 密码凭证
SHA-384 Secure Hash Standard (FIPS 180-4) 384 比特 (96 字符十六进制) > 2^192 次运算 推荐安全标准 (高合规) NSA Suite B 军用级密码学套件、企业级 VPN 与高合规 TLS 密码套件
SHA-1 FIPS 180-1 (已废止) 160 比特 (40 字符十六进制) 已被破解 (约 2^63 次运算) NIST 已于 2011 年弃用 历史遗留 Git 提交、旧版磁力链(禁止用于现代安全认证)
MD5 RFC 1321 (严重缺陷) 128 比特 (32 字符十六进制) 极易碰撞 (2^16 快速碰撞) 禁止用于任何密码安全 基础文件去重、非对抗性 Rsync 快速指纹(严禁用于签名与防篡改)
Argon2id / bcrypt 密码哈希专用 (RFC 9106) 可配置 / 192 比特 内存与算力双重硬化 用户密码存储强制推荐 专用于数据库用户密码存储(抵御 GPU / ASIC 彩虹表爆破)

HMAC 消息认证码机制 (RFC 2104)

HMAC (Hash-based Message Authentication Code) 结合了密码学散列函数与通信双方预共享的对称密钥(Secret Key)。它不仅能验证数据在网络传输中是否被篡改(完整性),还能强有力地证明该数据确由持有私密密钥的合法发起方所创建(真实性与防伪造)。广泛应用于 GitHub Webhook、Stripe 支付回调、AWS API Signature V4 等接口鉴权协议中。


开发者后端集成示例代码

1. Node.js & TypeScript (node:crypto)

import { createHash, createHmac } from 'node:crypto';

// 计算 SHA-256 十六进制摘要
export function sha256Hex(content: string): string {
  return createHash('sha256').update(content, 'utf8').digest('hex');
}

// 校验 Webhook HMAC-SHA256 签名
export function verifyWebhook(payload: string, secret: string, headerSig: string): boolean {
  const computed = createHmac('sha256', secret).update(payload, 'utf8').digest('hex');
  return computed === headerSig;
}

2. Python 3 (hashlib & hmac)

import hashlib, hmac

# 高性能分块读取大文件并计算 SHA-256 校验和(内存占用极低)
def calculate_file_sha256(filepath: str) -> str:
    hasher = hashlib.sha256()
    with open(filepath, 'rb') as f:
        for chunk in iter(lambda: f.read(65536), b''):
            hasher.update(chunk)
    return hasher.hexdigest()

3. Go (crypto/sha256 & crypto/hmac)

package hasher

import (
	"crypto/hmac"
	"crypto/sha256"
	"encoding/hex"
)

func Sha256(text string) string {
	hash := sha256.Sum256([]byte(text))
	return hex.EncodeToString(hash[:])
}

常见问题