哈希函数简介

哈希函数是一种将任意大小的数据输入(通常称为"消息")转换为固定大小的输出(称为"哈希值"或"摘要")的算法。

主要特点:

1、输出固定长度

无论输入数据的大小如何,哈希函数的输出总是固定长度。例如,SHA-256的输出始终为256位(32字节)。

2、快速计算

哈希函数应该能够快速计算,对于任何输入都能在合理的时间内生成哈希值。

3、抗碰撞性

理想的哈希函数应该难以找到两个产生相同的哈希值的不同输入,这种特性称为抗碰撞性。

4、抗篡改性

对输入数据进行任何小的修改,输出的哈希值应该发生显著变化。这使得哈希函数适合用于数据完整性检查。

5、不可逆性

哈希函数是单向的,无法从哈希值反推原始输入。这意味着一旦数据被哈希,就不能从哈希值恢复出原始数据。

常见哈希函数:
  • MD5:输出128位,曾广泛使用,但易遭受碰撞攻击。
  • SHA-1:输出160位,也曾被广泛使用,但已被发现存在安全漏洞,逐渐被淘汰。
  • SHA-256:SHA-2系列中的一种,输出256位,广泛用于安全应用,如数字签名和区块链技术。
  • SHA-3:新的安全哈希标准,设计上与SHA-2有所不同。
常见应用场景:
  • 数据完整性:用于文件下载、数据传输等场合,确保数据未被篡改。
  • 密码存储:将用户密码哈希后存储,增强安全性,防止明文泄露。
  • 数字签名:在签名过程前对消息进行哈希处理,以提高签名效率和安全性。
  • 区块链:区块链中每个区块通常包含前一个区块的哈希值,以确保区块链的不可篡改性。
相关推荐
Navigator_Z6 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
D e re k ZH6 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶7 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
雪落漂泊7 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
LabVIEW开发9 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview
严肃小白兔11 小时前
MATLAB 数值计算中的精度与误差问题:浮点运算、误差传播与数值稳定性
人工智能·算法·matlab
青少儿编程课堂12 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
jktantan13 小时前
注解式脱敏:用 Jackson 的 ContextualSerializer 做字段级策略(一)
spring boot·后端·算法·spring cloud·系统架构
Dream it possible!1 天前
LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)
算法·leetcode·面试·动态规划