RevealTheme logo

哈希生成器(MD5 / SHA)

生成加密哈希:MD5、SHA-1、SHA-256、SHA-384和SHA-512。通过Web Crypto API在你的浏览器中运行。

如何使用本工具

  1. 1

    Type or paste the text you want to hash into the input box.

  2. 2

    Click Generate to compute the digests.

  3. 3

    Read the SHA-1, SHA-256, SHA-384, and SHA-512 results, each shown as a lowercase hexadecimal string.

  4. 4

    Select a hash and copy it for use as a checksum, cache key, or content identifier.

什么是加密哈希,何时需要它们?

加密哈希函数是一种确定性算法,可将任意输入(几个字节、一个数GB的文件,或整部英文维基百科)转换为固定大小的输出,称为“摘要”(digest)或“哈希”。SHA-256产生256位(64个十六进制字符);SHA-512产生512位;MD5产生128位。有四个属性定义了“加密”哈希,使其区别于非加密哈希(如CRC32):确定性(相同输入 → 始终得到相同哈希)、雪崩效应(仅改变一位就会改变约一半的输出位)、抗原像性(你无法反向求解哈希以还原输入),以及抗碰撞性(你无法找到两个产生相同哈希的输入)。当一个哈希函数被攻破时,通常是后两个属性失守:针对MD5(2004年)和SHA-1(2017年)的碰撞攻击使它们不再适用于安全目的,尽管它们对于非对抗性的完整性校验(如文件校验和)仍然适用。对于任何新的安全工作,请使用SHA-256或SHA-512。本工具使用浏览器的Web Crypto API(crypto.subtle.digest),在现代设备上由硬件加速,其输出与OpenSSL、Python的hashlib模块以及Node的crypto模块逐字节完全一致。

常见使用场景

  • 验证下载的文件是否与发布方公布的SHA-256匹配(Linux的ISO镜像、安全工具的发行版)。

  • 为缓存键生成内容寻址标识符(内容哈希 → 稳定的URL)。

  • 为文件存储创建去重键(哈希相同 = 文件完全相同)。

  • 实现webhook签名校验:用共享密钥对负载做HMAC-SHA256。

  • 生成Git风格的内容哈希(用SHA-1作为树/blob的标识符)。

  • 通过计算关键列的哈希并存储它,来验证数据库行的完整性。

常见问题

为什么MD5在安全方面已被淘汰?
密码学家已经找到了构造两个产生相同MD5的不同输入的方法。一旦碰撞变得可寻找,MD5在对抗性场景中就不再是可靠的完整性信号(有人可能替换掉一个文件,并生成另一个具有相同哈希的文件)。对于非对抗性的校验和(文件是否正确下载完成?),MD5依然好用;它只是在数字签名或任何受攻击者影响的场景中才不安全。
哈希可以被反向还原吗?
不能直接还原:加密哈希是单向函数。但是:(1)对于短的或低熵的输入(密码、常见短语),攻击者可以预先计算每一个可能输入的哈希(彩虹表)并查找你的哈希。这正是密码哈希要使用唯一随机盐的原因。(2)对于任意长度且高熵的输入(随机密钥、文件内容),反向还原在计算上是不可行的。
SHA-256和HMAC-SHA256有什么区别?
SHA-256是简单哈希:任何拥有输入的人都能算出相同的哈希。HMAC-SHA256是带密钥的哈希:你需要一个共享密钥才能计算它。webhook使用HMAC,是因为验证方想知道的是“这是由知道密钥的人创建的吗?”,而不仅仅是“负载是否与某个已知值匹配?”。带密钥的变体请使用我们的HMAC生成器。
我什么时候该用SHA-512而不是SHA-256?
SHA-512有更多的输出位(512对256),这使得碰撞攻击在理论上更难。但SHA-256在任何合理的时间范围内都已经足够安全(抗碰撞的有效强度为2^128)。在64位硬件上,由于其更宽的内部运算,SHA-512有时会更快。默认请使用SHA-256;若有具体理由,再使用SHA-512。
为什么我的SHA哈希与另一个工具算出的不一样?
三种可能的原因:(1)输入编码不同:被哈希的字节必须一致。同一段可见文本,用UTF-8、UTF-16或Latin-1会产生不同的哈希。本工具将输入编码为UTF-8。(2)末尾换行符:有些工具会添加换行符,有些则不会。(3)BOM(字节顺序标记):某些编辑器会给UTF-8文件添加一个隐藏的三字节前缀。
用它处理敏感数据安全吗?
安全:哈希计算通过Web Crypto在你的浏览器本地进行。输入永远不会离开你的设备。哈希本身并不“敏感”,因为它们不会泄露输入(前提是有足够的熵),但如果你对低熵数据(如未加盐的密码)计算哈希,请注意任何看到该哈希的人都有可能通过彩虹表将其反向还原。

相关工具