Hash Generator

Hash Generator 哈希生成器

从文本或文件即时计算 MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC32 哈希值,完全在你的浏览器中运算,绝不上传。

不会。所有哈希运算完全在你的浏览器内通过 JavaScript 和 Web Crypto API 执行。输入文本或选择文件时不会发出任何网络请求。你可以打开浏览器的 Network 面板自行验证。

文件完整性(校验码)用 MD5 或 SHA-256 都可以,非安全用途没问题。安全用途(密码哈希、签名)请使用 SHA-256 或 SHA-512,绝不要用 MD5 或 SHA-1(两者都已经被破解碰撞)。CRC32 仅适用于检测意外数据损坏,不适用于安全用途。

0 字符 · 0 字节
算法
|

小提示:输入时哈希会即时更新。取消勾选不需要的算法可加速大文件哈希。

为什么选择 Hash Generator?

快速、隐私、涵盖所有常用的哈希算法。

隐私优先

所有哈希运算都在你的浏览器内执行,文本和文件绝不传送、存储或记录到任何地方。

六种算法一次到位

MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC32 — 同时显示全部,或只选你需要的。

文件哈希

拖曳任何文件(含数 GB 大文件),即时进度条显示。分段读取,低内存消耗。

25 种语言

支持 25 种语言,自动检测浏览器语言。支持阿拉伯、波斯、乌尔都语的 RTL 排版。

即时输出

输入时哈希即时更新(含 debounce)。每组结果都有一键复制,可切换大小写。

使用 Web Crypto API

SHA 系列哈希使用浏览器原生 Web Crypto API — 与 TLS 和子资源完整性使用的是相同的实现。

哈希生成器如何工作

Web Crypto API 处理 SHA 系列,大文件采用流式处理。

  1. 1

    拖入文件或粘贴文本

    对于文本输入,我们通过 TextEncoder 将其编码为 UTF-8 字节。对于文件,小文件用 File.arrayBuffer 读取,大于约 100 MB 的文件则通过 TransformStream 流式处理。

  2. 2

    Web Crypto 处理数学运算

    crypto.subtle.digest('SHA-256', bytes) 使用浏览器的硬件加速实现来计算哈希。这是 OpenSSL 使用的同一种算法,只是在 V8 / JavaScriptCore 沙箱内运行。SHA-1、SHA-384、SHA-512 用法相同。

  3. 3

    MD5 与 CRC32 通过 WebAssembly

    MD5 与 CRC32 不在 Web Crypto 中(因为前者已在密码学上被攻破,后者本来就不是密码学算法)。我们附带了非常小的 WASM 实现(各约 5 KB),用同样的流式模式来计算。

  4. 4

    展示全部 6 种哈希

    结果以十六进制格式显示,每一项旁边都有一键复制按钮。我们也为 SHA 系列提供 Base64 输出 — 在与 AWS S3 ETag 或 HTTP Content-Digest header 比较时很常见。

什么时候选哪种哈希

哈希用途很多 — 选择适合任务的算法。

校验下载的 ISO

用 SHA-256 与发布方公布的校验和比对。即便只有一字节被篡改,摘要也会不同。MD5 与 SHA-1 用于检测意外损坏没问题,但不要用它们对抗攻击者。

文件去重

用 SHA-1(如果对速度的要求胜过抗碰撞性,甚至可以用 MD5)对一组照片做哈希。哈希相同就意味着字节相同 — 用于清理重复上传很有用。

生成 ETag 值

AWS S3 对单部分对象使用 MD5,对多部分对象使用另一种方案。iKit 让你即时拿到原始 MD5,用以验证你的本地文件是否与 S3 上的一致。

确认备份

分别对原文件与备份用 SHA-256 计算哈希,比较两个字符串。哈希相同 = 内容一致。哈希不同 = 备份已损坏或过时。

为什么本地哈希很重要

一些在线哈希工具仅仅为了计算校验和就把你的文件上传 — 对于隐私敏感操作来说完全本末倒置。iKit 的哈希生成器使用 Web Crypto 在浏览器中完成所有计算,因此即便是机密或私人文件,也能在不离开你机器的情况下被哈希。

  • 通过 Web Crypto API 实现硬件加速 SHA。
  • 以 64 KB 块流式处理大文件 — 无上传,内存不爆。
  • 无文件元数据、无与 IP 关联的日志、无需注册。

相关教程

来自 iKit 博客的深度教程与工具对比。

常见问题

我的输入会被发送到服务器吗?

不会。所有哈希运算完全在你的浏览器内通过 JavaScript 和 Web Crypto API 执行。输入文本或选择文件时不会发出任何网络请求。你可以打开浏览器的 Network 面板自行验证。

我该使用哪个算法?

文件完整性(校验码)用 MD5 或 SHA-256 都可以,非安全用途没问题。安全用途(密码哈希、签名)请使用 SHA-256 或 SHA-512,绝不要用 MD5 或 SHA-1(两者都已经被破解碰撞)。CRC32 仅适用于检测意外数据损坏,不适用于安全用途。

MD5 和 SHA-1 还安全吗?

文件校验码和检测意外损坏用还可以 — MD5 和 SHA-1 仍普遍用于下载页面等场景。但安全关键用途(密码、签名、证书)则不行 — 两者都有已知的碰撞攻击。任何安全敏感的场景请使用 SHA-256 或更高。

可以哈希大文件吗?

可以。文件以 2 MB 分段读取并显示即时进度。MD5 和 CRC32 采用完全渐进式处理(内存恒定)。SHA 系列受 Web Crypto API 限制需要把文件全部载入内存,所以超过 ~2 GB 的文件在部分浏览器可能无法处理。

为什么 MD5 和 SHA-256 的输出长度不同?

每个算法输出固定长度的摘要:MD5 = 128 位 (32 个 hex)、SHA-1 = 160 位 (40 个 hex)、SHA-256 = 256 位 (64 个 hex)、SHA-384 = 384 位 (96 个 hex)、SHA-512 = 512 位 (128 个 hex)、CRC32 = 32 位 (8 个 hex)。