什么是哈希

哈希(Hash),又叫散列,是一种单向的数学函数。它接收任意长度的输入(一句话、一个文件、一部电影),输出固定长度的"哈希值"(也叫摘要 / Digest),就像一个独一无二的指纹。

// 同一个输入,永远产生同一个哈希
输入:Hello World
SHA-256:a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

// 改一个字母,哈希完全不同
输入:hello World
SHA-256:e4d7f1b4ed2e42d15867f945d8d75d7a4e26cbf10fd2d6a0e6a3fe0c7c7f2e3b

// 无论输入多长,输出始终 256 位(64 个十六进制字符)
输入:一整个 10GB 的电影文件
SHA-256:仍然是一个 64 字符的字符串

哈希有三个核心特性:①确定性(同一输入永远同一输出)、②单向性(从哈希值无法推出原始输入)、③雪崩效应(输入改动 1 bit,输出变化 50% 以上)。

在线生成哈希的步骤

  1. 打开 哈希生成工具,在输入框中输入或粘贴文本。
  2. 选择哈希算法:SHA-256(推荐)、SHA-512、SHA-1、MD5 等,结果实时生成。
  3. 如需计算文件的哈希值,切换到「文件」标签页,选择本地文件,工具读取后立即算出哈希。
  4. 点击「复制」复制哈希值,与官方提供的哈希对比校验文件完整性。

所有计算在浏览器本地完成,文件不会被上传到服务器。

核心功能一览

多算法支持

SHA-1 / SHA-256 / SHA-384 / SHA-512 / MD5,覆盖所有主流哈希算法。

文件哈希计算

选择本地文件直接计算哈希值,适合校验下载文件的完整性。

实时生成

输入的同时即时显示哈希值,无需点击按钮。

纯本地计算

使用 Web Crypto API 在浏览器本地计算,文本和文件绝不上传。

SHA256 vs MD5 vs SHA-1:该用哪个

算法输出长度安全状态推荐用途
MD5128 bit(32 字符)已破解(可碰撞)仅数据去重、非安全校验
SHA-1160 bit(40 字符)已破解(可碰撞)不推荐新项目使用
SHA-256256 bit(64 字符)目前安全密码签名、区块链、TLS、文件校验
SHA-512512 bit(128 字符)目前安全高安全要求场景,64 位平台更快

哈希 vs 加密:核心区别

维度哈希(Hash)加密(Encryption)
方向单向,不可逆双向,可解密还原
密钥不需要需要密钥
输出长度固定(如 SHA256 始终 256 bit)与输入长度成正比
典型用途密码存储、文件校验、数字签名数据传输加密、文件保密

常见应用场景

  • 文件完整性校验:下载 ISO 镜像、软件包后,计算本地文件的 SHA256 与官方公布的值对比,确认未被损坏或篡改。
  • 密码存储:用户注册时,后端不存明文密码,只存 bcrypt(sha256(password) + salt) 的结果。即使数据库泄露,攻击者也无法直接获得明文。
  • 数据去重:云存储服务用文件哈希判断两个用户是否上传了同一文件,避免重复存储。
  • Git 版本控制:Git 用 SHA-1 哈希标识每一次 commit、每个文件对象,确保版本历史不可篡改。
  • 区块链:每个区块包含前一个区块的哈希,形成不可篡改的链式结构。

常见问题 FAQ

SHA256 和 MD5 有什么区别?该用哪个?

两者都是哈希算法,但安全性差距巨大。MD5 已被完全破解——已知方法可以构造两个内容不同的文件拥有完全相同的 MD5 值(碰撞攻击)。MD5 仅适合非安全场景(如数据去重、校验传输中的随机错误)。SHA256 目前安全,是行业标准,用于密码签名、区块链、TLS 证书等。新项目应使用 SHA256 或更安全的 SHA512。

哈希值和加密有什么区别?

加密是双向的:用密钥加密后,可以用密钥解密还原出原文。哈希是单向的:任意输入都能算出哈希,但从哈希值无法推导出原始输入(理想情况下)。因此密码应该用哈希(加盐)存储——即使数据库泄露,攻击者也无法直接从哈希值获取明文,只能暴力穷举尝试。

怎么用哈希校验下载的文件是否完整?

很多开源软件官网会提供 SHA256 checksum。下载文件后,用哈希工具选择该文件,计算 SHA256 值,与官网公布的值逐字符对比。如果完全一致,说明文件完整且未被篡改;如果不一致,文件可能损坏或已被植入恶意代码。

在线哈希生成安全吗?数据会上传吗?

速工具 的哈希生成完全在浏览器本地运行,使用 Web Crypto API,文本和文件不会上传到任何服务器。但注意:不要在在线工具中哈希真正的密码或密钥——即使不上传,浏览器环境的安全假设不同于后端(如可能被浏览器扩展读取)。生产环境密码哈希应使用 bcrypt/scrypt/argon2 在后端完成。