Lazy loaded image
加解密
🔑白话哈希(Hash)算法
Words 1770Read Time 5 min
2024-12-26
2025-12-26
type
Post
status
Published
date
Dec 26, 2024
slug
hash
summary
哈希算法 是一种将任意长度的数据压缩到某一固定长度的数据摘要的算法,得到的结果称为 哈希值 或 散列值。
tags
加解密
category
加解密
icon
password
上次编辑时间
Dec 26, 2025 03:47 AM
comment
AI 总结

什么是Hash算法?

hash运算(哈希运算)是一种将任意长度的输入(称为“预映射”或“键”)通过某种算法转换成固定长度输出(通常是一个较小的整数,称为“哈希值”或“散列值”)的过程。这个过程是不可逆的,即通常无法从哈希值恢复出原始输入数据。哈希运算在多个领域有广泛应用,包括数据加密、数据检索、错误检测等。

一、主要特性

特性
说明
典型应用
输出固定长度
无论输入大小,输出长度恒定(如 SHA-256 输出 256 位)
数据摘要、索引
确定性
相同输入始终产生相同哈希值
完整性校验
不可逆性
无法从哈希值有效反推出原始输入
密码存储、隐私保护
抗碰撞性
极难找到两个不同输入产生相同哈希值
数字签名、防伪造
雪崩效应
输入的微小变化导致输出哈希值显著且不可预测地改变
增强安全性和随机性

二、应用场景

密码存储:在存储用户密码时,不直接存储密码明文,而是存储其哈希值。这样即使数据库被泄露,攻击者也难以直接获取用户密码。 数据完整性校验:通过计算文件的哈希值来检测文件是否被篡改。如果文件的哈希值在传输或存储后发生了变化,则表明文件可能已被修改。 数据检索:在数据库或哈希表中,通过计算键的哈希值来快速定位数据的位置。这可以显著提高数据检索的效率。 负载均衡:在分布式系统中,可以通过对请求的某些参数进行哈希运算来选择处理该请求的服务器,以实现负载均衡。

三、常用哈希算法

哈希算法,根据碰撞概率,哈希算法的输出长度越长,就越难产生碰撞,也就越安全。
算法
输出长度(位)
输出长度(字节)
16进制长度
MD5
128 bits
16 bytes
32
SHA-1
160 bits
20 bytes
40
RipeMD-160
160 bits
20 bytes
40
SHA-256
256 bits
32 bytes
64
SHA-512
512 bits
64 bytes
128

四、详细特征识别

  • 固定长度:MD5(32十六进制字符),SHA-1(40字符),SHA-256(64字符)
  • 字符集:十六进制表示(0-9, a-f),可能大小写混合
  • 位置特征:常出现在API响应、密码字段、文件校验、会话标识
  • 加盐迹象:相同输入产生不同输出(提示存在盐值)

五、Python实现

上一篇
Base64系列编码
下一篇
深入理解AES加密
  • Author:24th
  • URL:https://24th.top/article/hash
  • Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!

Comments
Loading...