哈希算法介绍

本文详细介绍了哈希函数的概念、性质及其在消息认证中的六种应用方式。重点讨论了哈希函数的安全要求,包括单向性和抗碰撞性。同时,提到了与哈希函数相关的两类生日攻击。MD5和SHA两种常见的哈希算法也被深入剖析,包括它们的输入输出特性、处理过程和压缩函数。MD5算法以512比特分组,输出128比特消息摘要,而SHA则处理更长的消息并产生160比特的消息摘要。
摘要由CSDN通过智能技术生成

哈希算法

  • 哈希函数

    在密码学中,哈希函数H是一个公开函数,用于将任意长的消息M映射为较短的、固定长度一个值H(M),作为认证符,称函数值H(M)为哈希值或哈希码或消息摘要。哈希函数的安全性要求给定数据容易计算出哈希值,但给定哈希值不能计算出数据。哈希码提供了一种错误检测能力。

  • 使用哈希函数提供消息认证有6种基本使用方式

    (1)消息与哈希码链接后用单钥加密算法加密(2)用单钥加密算法仅对哈希码加密(3)用公钥加密算法和发方的秘密钥仅加密哈希码,这种方法提供了数字签名(4)消息的哈希码值用公钥加密算法和发送方的秘密钥加密后与消息链接,再对链接后的结果用单钥加密算法加密,这种方法提供了保密性和数字签名。(5)通信双方共享一个秘密值S,A计算消息M和秘密值S链接在一起的哈希值,并将此哈希值附加到M后发往B。(6)在(5)中消息与哈希值链接后再增加单钥加密计算,提供保密性。

  • 哈希函数需要的条件:

  1. 函数的输入可以是任意长的。

  2. 函数的输出是固定长的。

  3. 已知x,求H(x)较为容易

  4. 已知h,求使得H(x)=h的x在计算上是不可行的,,满足这一性质称为的哈希函数为单向哈希函数。

  5. 已知h,求使得h(x)=h的x在计算上是不可行的,满足这一性质称为若单向哈希函数。

  6. 找出任意两个不同输入的x,y,使得h(x)=h(y)在计算上是不可行的,满足这一性质称为强单向哈希函数。

  • 与哈希函数有关的攻击:

第I类生日攻击

第II类生日攻击

  • 哈希算法:

哈希函数也称为哈希算法,目前常见的哈希算法有MD5哈希算法、SHA哈希算法等。现在常见的哈希算法都是迭代结构。伪代码如下:

CV0 = IV = n比特长的初始值
CVi = f(CVi-1, Yi-1); 1 <= i <= L
H(M) = CVL

MD5哈希算法

算法输入为任意长的消息,分为长为512比特的分组,输出为128比特的消息摘要。

  1. 对消息填充。使得其比特长在模512下为448。
  2. 附加消息长度。用留下的64比特以little-endian 方式表示消息被填充前的长度。
  3. 对MD缓冲区初始化。算法使用128比特长的缓冲区已存储中间结果和最终哈希值,缓冲区表示为4个32比特长的寄存器ABCD,其初始值A=01234567,B=89ABCDEF, C=FEDCBA98,D=76543210。
  4. 以分组为单位对消息进行处理。每一分租都要经过压缩函数H(哈希函数)MD5的处理,H是算法的核心。其中又有4轮处理过程,如下
    在这里插入图片描述
  • MD5的压缩函数
    在这里插入图片描述

安全哈希算法SHA

算法输入是小于2^64比特长的任意消息,分为512比特长的分组,输出为160比特长的消息摘要。算法框图与MD5一样,但哈希值的长度和链接变量为160比特。

算法步骤如下:

  1. 对消息填充。与MD5一样。
  2. 附加消息长度。与MD5类似,不同之处在于以big-endian方式填充。
  3. 对MD缓冲区初始化。算法使用160比特的缓冲区存储中间结果和最终的哈希值,缓冲区可表示为5个32比特长的寄存器ABCDE,其初始值为A=67452301,B=EFCDAB89,C=98BADCFB,D=10325476,E=C3D2E2F0。
  4. 以分组为单位对消息进行处理。框图和MD5相似。

MD5算法实现

SHA算法实现

ps://blog.csdn.net/lwanttowin/article/details/53726450)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值