【密码学】哈希函数与加密算法的关系

一、哈希函数的定义

        哈希函数(Hash Function),也被称为散列函数或杂凑函数, 是一种将任意长度的输入数据(通常称为“预映射”或“消息”)转换为固定长度输出(通常称为“哈希值”、“散列值”、“杂凑值”或“摘要”)的算法。
哈希函数的定义​​​​​​

【注】哈希值是固定长度的,哈希函数H是公开的。

        hash函数到底长什么样子?我们用一个简单的hash函数举例:

M是一个长消息,设M=(M_1,M_2,...,M_i,...,M_k),其中M_il长的比特串,定义哈希函数H如下

H(M) = M_1\oplus M_2\oplus...\oplus M_k

        解释一下这个简单的哈希函数,先把消息M分成k组,每组都是l长,那么哈希函数是进行异或运算的,得到的结果也必然是l长。这样无论多长的M消息,都能通过这个哈希函数生成固定长度的哈希值。

二、哈希函数的功能

(1)最重要的功能

数据完整性检验:哈希函数可以用于验证数据是否被修改。当数据被哈希后,如果数据的任何部分发生变化,重新计算的哈希值也会随之变化。因此,可以通过比较哈希值来判断数据的完整性。

数据完整性检验

         对上图做出解释:当一份数据首次被创建或接收时,会使用哈希函数计算出该数据的哈希值。这个哈希值就像是数据的一个指纹。计算出来的哈希值会被记录下来,通常与数据分开存储或传输,以防止篡改。当数据被再次使用或从远程位置下载时,接收者会重新计算数据的哈希值,并将其与之前记录的哈希值进行比较。

        如果两个哈希值匹配,这表明数据自第一次计算哈希值以来没有被篡改过,因此数据的完整性得到了验证。如果哈希值不匹配,则意味着数据可能已经被修改,或者在传输过程中发生了错误,这时数据的完整性被认为受到了破坏。

(2)其他功能

① 密码存储

        在用户身份验证系统中,用户的密码通常不是以明文形式存储,而是存储其哈希值。当用户登录时,系统对输入的密码进行哈希并与存储的哈希值进行比较,以验证用户的身份。

② 数字签名

        数字签名利用哈希函数将长消息压缩为较短的哈希值,然后使用私钥对该哈希值进行加密。这保证了消息的完整性和来源的真实性,因为只有拥有正确私钥的人才能生成有效的数字签名。

三、哈希函数满足条件及安全性定义

(1)哈希函数需要满足以下这些条件

  • hash函数的输入可以是任意长
  • hash函数的输出是固定长
任意长输入,得到固定长输出
  • 输入中的微小变化,也会导致哈希值显著改变(雪崩效益)
改变其中一个字,哈希值明显不同
  • 易于在软件和硬件实现
  • 相同的输入总是得到相同的输出(确定性)

(2)哈希函数需要满足的安全条件

  • 单向性:已知x,求H(x)较为容易;但是,已知h,求使得H(x)=hx在计算上是不可行的。
  • 抗弱碰撞性:已知x,找出y(y\neq x)使得H(y)=H(x)在计算上是不可行的。
  • 抗强碰撞性:找出任意两个不同的输入xy,使得H(y)=H(x)在计算上是不可行的。
三个安全性之间的关系

        从安全性的角度来说,单向性是最基础(最弱)的安全属性,抗强碰撞是最强的要求,它隐含了抗弱碰撞和单向性的安全性。换句话说,如果一个哈希函数是抗强碰撞的,那么它自然也是抗弱碰撞的和单向的。但是,反之则不一定成立;即,一个满足单向性和抗弱碰撞的哈希函数可能并不满足抗强碰撞性。

四、哈希函数与加密算法的关联

        哈希函数虽然经常与加密算法一起讨论,并且在很多安全相关的应用中发挥着关键作用,但哈希函数本身并不是一种加密算法。

特征加密算法哈希函数
可逆性双向的,数据可以通过加密算法加密,再通过解密算法恢复原始数据。单向的,从产生的哈希值几乎不可能反向计算出原始数据。
目的保护数据隐私,确保数据不会被未经授权的第三方读取。验证数据完整性和一致性,检测数据是否被篡改。
输出输出长度可变,依据加密模式和密钥长度。输出长度固定,不论输入数据长度如何。
安全性属性需要保证数据的机密性。需要满足抗碰撞性、预像抵抗性和二次预像抵抗性等安全属性。
  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值