跳到主要内容
FreeOnlineTools Go
简体中文
解释

什么是哈希?哈希函数的完整说明

作者:FreeOnlineTools Team · 更新日期:2026-09-02

快速解答

散列使​​用单向函数将任何输入转换为固定大小的输出(散列)。相同的输入总是产生相同的哈希值;不同的输入产生不同的哈希值(抗碰撞性)。散列用于数据完整性、密码存储和数字签名。使用我们的免费哈希生成器在浏览器中计算 SHA-256、SHA-1 和 MD5 哈希值。

介绍

散列是将任意大小的输入数据转换为固定大小的输出(称为散列或摘要)的过程。哈希函数是执行此转换的算法。加密哈希函数具有特殊的属性,使其可用于数据完整性、密码存储、数字签名和内容寻址。与加密不同,散列是单向的——您无法从散列中恢复输入。常见的哈希函数包括 SHA-256(用于比特币和 TLS)、SHA-3 以及较旧的 MD5 和 SHA-1(现已因安全用途而被破坏)。

步步

  1. 了解哈希函数属性

    加密哈希函数有四个关键属性: (1) 确定性——相同的输入总是给出相同的输出。 (2)计算速度快。 (3) 单向——无法从哈希中恢复输入。 (4) 抗碰撞——无法找到具有相同哈希值的两个不同输入。 (5) 雪崩效应——微小的输入变化会极大地改变输出。

  2. 学习常用算法

    SHA-256(256 位输出,64 个十六进制字符)是现代标准 - 用于比特币、TLS 和数字签名。 SHA-512 更安全,但速度较慢。 SHA-3 是最新的家族。 MD5(128 位)和 SHA-1(160 位)因防碰撞而被破坏,不应用于安全性。

  3. 区分散列和加密

    散列是单向的——你无法逆转它。加密是双向的——您可以使用密钥解密。散列是为了完整性和验证;加密是为了保密。切勿使用哈希来存储需要恢复的数据。

  4. 正确使用哈希

    为了保证数据完整性,对数据进行哈希处理并与已知良好的哈希值进行比较。对于密码,请使用带有独特盐的慢速密钥拉伸哈希(bcrypt、scrypt、Argon2),而不是原始的 SHA-256,它太快且容易受到暴力破解。

示例

SHA-256 哈希

输入: Hello, World!

输出: dffd6021bb2bd5b0af676290809ec008dfca50a8d29e6ac0a52c2d7e9f0a3b0c

雪崩效应

输入: 你好世界! (与你好,世界?)

输出: 尽管改变了一个字符,但哈希值却完全不同

MD5 哈希(已损坏,仅旧版本)

输入: Hello, World!

输出: ed0760733d7505e9ceacf8af225020ac

常见问题

  • 使用 MD5 或 SHA-1 来保证安全——两者都因抗碰撞而被破坏。出于任何安全目的,请使用 SHA-256 或更强大的值。
  • 不使用盐对密码进行哈希处理——相同的密码会产生相同的哈希值,从而实现彩虹表攻击。使用 bcrypt、scrypt 或 Argon2 以及独特的盐。
  • 混淆散列与加密——散列是单向的(无法逆转);加密是双向的(可以用密钥解密)。
  • 期望哈希值是唯一的——碰撞在理论上是可能的,但对于安全算法来说实际上是不可行的(SHA-256 有 2^256 种可能的输出)。

提示

  • 使用 SHA-256 进行数据完整性验证、内容寻址和数字签名。
  • 对于密码存储,请使用 bcrypt、scrypt 或 Argon2 — 而不是原始 SHA-256。这些算法具有密钥拉伸以抵抗暴力破解。
  • 散列是单向的——切勿使用它来存储需要恢复的数据。对机密数据使用加密。
  • 使用我们的哈希生成器在浏览器中立即计算 SHA-256 和其他哈希。

相关工具

相关指南

参考