新编密码学——Hash函数

一、Hash函数概述

1.1、什么是Hash函数?

Hash函数(也称散列函数)是一个将 任意长度的消息x序列映射为较短的、 固定长度的一个值y的函数。

1.2、Hash函数分类

  • 带密钥的Hash函数:可将y和消息x一起在不安全的信道中传输
  • 不带密钥的Hash函数:y必须安全存放,确保y不被篡改

1.3、Hash函数应满足的条件(重点):

  • 从实用的角度:

    • 已知x,求H(x)较为容易, 并可用硬件或软件快速实现
    • 输入的消息可以任意长;输出的“指纹”固定长
  • 从安全的角度**(重点)**:

    • 原像问题:给定H(x),恢复x在计算上是不可行的;

    • 第二原像问题:给定 (x, H(x)),找到一个x1(x != x1

      ),使得H(x1) = H(x) 在计算上不可行

    • 碰撞问题:找到两个有意义的消息x1和x2,使得H(x1)=H(x2)几乎是不可能的。

1.4、对称MAC的一种Hash函数的一般结构

在这里插入图片描述

二、MD5(Message Digest,消息摘要)

MD5是由密码学家 Rivest在1992年公布的单向散列函数

2.1、特点:

  • MD5采用了Merkle提出的迭代模型;
  • 输入消息可以任意长;
  • 每一次迭代处理512bit的消息分组;
  • 最终输出散列值为128bit

2.2、产生散列值的过程

在这里插入图片描述
在这里插入图片描述

三、SHA1(Security Hash Algorithm,安全Hash算法)

3.1、参数信息及MD5比较(重点)

SHA-1MD5
最大消息长度< 2^64不限
消息分组长度512512
结构MerKle迭代MerKle迭代
链接变量长度160128
散列值长度160128

3.2、产生报文摘要的过程

在这里插入图片描述

四、MAC

  • 消息认证码(MAC):一种确认完整性并进行认证的技术
  • MAC是一种带密钥的函数h = MAC k(X)
    • 两个输入:消息x和共享密钥K
    • 输出:固定长度的数组,称之为MAC值或认证码

4.1、消息认证码(MAC)是如何实现消息认证的?

在这里插入图片描述

4.2、常见的三种MAC构造方式

  • 基于分组密码的MAC
    • CBC-MAC : 认证码的长度 = 分组密码的密文长度
  • 基于序列的MAC
    • ZUC算法:密钥长度可选128,256 (两个算法只在密钥加载 方式及常数设置上有一些的差别)
  • 基于密码hash函数的MAC——HMAC
    • HMAC-MD5
    • HMAC-SHA-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值