1、Hash函数

1、Hash函数(也称散列函数)是一个将任意长度的消息x序列映射为较短的、固定长度的一个值y的函数。
2、Hash函数的目的是为需要认证的数据产生一个‘指纹’。
为了能够实现对数据的认证,Hash应满足以下条件:

从实用角度
1)已知x,求H(x)较为容易,并可用硬件或软件快速实现。
2)输入的消息可以任意长,输出的‘指纹’固定长
从安全角度
1)原像问题(单向性):给定H(x),恢复x在计算上是可不行的
2)第二原像问题(抗弱碰撞性):给定(x,H(x)),找到一个X’(x不等于x’),使得H(x’)=H(x)在计算上是不可行的
3)碰撞问题(抗强碰撞性):找到两个有意义的消息x1和x2,使得H(x1)=H(x2)几乎是不可能的
下面关于Hash函数的描述不正确的是______A______A.对于任意长的输入消息,输出的Hash值的长度可以变B.原像问题是指根据输出的Hash值去求解输入的消息在计算上是不可行的C.第二原像问题是指找出一个消息,使得它的Hash值与某个给定消息的Hash值相同,这在计算上是不可行的D.第二原像问题是针对防伪造提出的
在Hash函数中,已知x,找到y(y≠x),使得h(y)=h(x)在计算上是不可行的,这一性质称为抗弱碰撞性在Hash函数中,已知y,找到x满足y=Hash (x) 在计算上是不可行的,这一性质称为 单向性
如果找到两个消息 x 和 x',它们具有相同的Hash值,则是找到了一对(碰撞)消息

3、单向Hash函数的实际应用
检测软件是否被纂改
在密钥管理中用于生成密码
消息认证码
数字签名

2、Hash函数-MD5算法

1、MD5是由密码学家Rivest在1992年公布的单向散列函数
2、特点
MD5采用了Merkle提出的迭代模型
输入消息可以任意长
每一次迭代处理512bit的消息分组
最终输出散列值为128bit
3、预处理-----对消息填充
1)填充消息使其长度为512位的整数倍

末尾处附上64bit消息长度的二进制表示
然后在消息后面填充一个‘1’和对个‘0’(至少要填充一位)
填充后的消息恰好是512bit的整数倍长L

2)初始化缓冲区

MD5采用的是(Merkle)迭代结构,输入消息长度可以是(任意长)         ,
输出的Hash值长度为 (128bit),每一次迭代处理的消息分组的长度为(512)。
若MD5输入消息长度为605位,则需要填充(355)比特;若消息的长度为1472位,则需要填充(512)比特
MD5的每一次迭代可以分为4轮,而每一轮又可以分为16步

3.MD5轮结构

基本逻辑函数g

每一轮使用一个基本逻辑函数g
输入是三个32位的字,输出是一个32位的字
它执行位逻辑运算


MD5具有的性质:Hash函数的每一位均是输入消息序列中每一位的函数。该性质保证了在Hash函数计算过程中产生基于消息x的混合重复,从而使得生成的Hash函数结果混合得非常理想。

4、SHA-1算法

安全Hash算法

             SHA-1               MD5
最大消息长度      <2的64次方      不限
消息分组长度                  512
结构                  Merkle迭代
链接变量长度      160                 128
散列值长度       160                 128
抗穷举搜索攻击的强度 强 (抗密码分析的)             弱
速度:          慢                   快
简洁与紧致性          都简单

初始化缓冲区

算法具体操作

1、填充过程
2、在填充的结果序列后附加序列
3、对给定的5个32位的寄存器A,B,C,D,E赋初值
4、将以上得到的寄存器的值赋给相应的变量AA,BB,CC,DD,EE。然后对512位的消息分组序列y应用主循环进行处理,每一次循环都有四轮操作
SHA-1 算法采用的是Merkle迭代结构,每一次迭代可以分为4轮,而每一轮又可以分为20步SHA-1中每一次迭代处理的消息分组的长度为512 ,输出的Hash值长度为 160         比特

5、HMAC

Hash函数实现完整性验证中存在的问题—认证
1、消息认证码:
一种确认完整性并进行认证的技术
2、MAC是一种带钥匙的函数h=MAC(x)
2个输入:消息x和共享密钥K
输出:固定长度的数字,称之MAC值或认证码
3、MAC的构造
常见的2种MAC构造方法
1)基于分组密码的MAC
CBC-MAC
2)基于密码hash函数的MAC—HMAC
HMAC—MD5
HMAC—SHA-1

下面关于MAC描述正确的是____D_______A.可以实现完整性B.可以实现对等身份认证C.可以实现保密D.需要发送方和接收方事先共享对称密钥
HMAC结构中使用了2次Hash函数,HMAC-MD5表明使用的Hash函数为 MD5      .

一个MAC算法一般由秘密密钥k和参数化的一簇函数Hk构成,应具有如下特性:
1)容易计算
2)压缩
3)强碰撞性

第六章、Hash函数相关推荐

  1. 第四十六章 SQL函数 DAY

    文章目录 第四十六章 SQL函数 DAY 大纲 参数 描述 第四十六章 SQL函数 DAY 返回日期表达式的月份日期的日期函数. 大纲 DAY(date-expression){fn DAY(date ...

  2. 第六十六章 Caché 函数大全 $TRANSLATE 函数

    文章目录 第六十六章 Caché 函数大全 $TRANSLATE 函数 大纲 参数 描述 `$TRANSLATE`和`$REPLACE` 示例 第六十六章 Caché 函数大全 $TRANSLATE ...

  3. 第十六章 SQL函数 ABS

    文章目录 第十六章 SQL函数 ABS 大纲 参数 描述 示例 第十六章 SQL函数 ABS 返回数值表达式的绝对值的数值函数. 大纲 ABS(numeric-expression){fn ABS(n ...

  4. 第三十六章 SQL函数 CURRENT_TIME

    文章目录 第三十六章 SQL函数 CURRENT_TIME 大纲 参数 描述 小数秒精度 示例 第三十六章 SQL函数 CURRENT_TIME 返回当前本地时间的日期/时间函数. 大纲 CURREN ...

  5. 【第六章】函数---实战练习(明日科技书本配套)

    [第六章]函数---实战练习(明日科技书本配套) 题目 实战一:导演为剧本选主角 代码 输出 实战二:模拟美团外卖商家的套餐 代码: 输出 实战三:根据生日判断星座 代码: 输出: 实战四:将美元转换 ...

  6. [swift 进阶]读书笔记-第六章:函数 C6P1函数的灵活性(The flexibility of function)...

    第六章:函数(function) 6.1 函数的灵活性(The flexibility of function) 注:本节前部分主要通过一个排序的demo来介绍了函数的灵活性 话不多说,直接上代码 v ...

  7. 第六十六章 SQL函数 ISNULL

    文章目录 第六十六章 SQL函数 ISNULL 大纲 参数 描述 日期和时间显示转换 比较的NULL处理函数 示例 第六十六章 SQL函数 ISNULL 测试NULL并返回相应表达式的函数. 大纲 I ...

  8. 沈阳师范大学大一上册C语言PTA题目集以及答案(第六章 指针 函数题篇)

    沈阳师范大学大一上册C语言PTA题目集以及答案(第六章 指针 函数题篇) 6-1 字符串的连接 (15分) 本题要求实现一个函数,将两个字符串连接起来. 函数接口定义: char *str_cat( ...

  9. 密码学基础知识(六)Hash函数与消息认证

    Hash函数和消息认证 先说Hash 哈希函数,可以将任意长度的消息压缩为某一固定长度的消息摘要函数.一句话,Hash简直了. 当然有逆天的一面就有大缺点,过程不可逆.傻了吧,哈哈. Hash的性质: ...

  10. 将军今天讲c语言了吗第六,计算机c语言 第六章:函数 教学设计(修改).doc

    <C语言程序设计>之 ----- "函数"教学设计 贵州交通技师学院 张 红 <C语言程序设计>之 ----- "函数"教学设计 [教材 ...

最新文章

  1. SQL语句中 left join 后用 on 还是 where,区别大了!
  2. 选择Scrum看板工具的七点特征
  3. lua实现多继承-方式1
  4. linux 组的管理,LINUX用户组管理各命令的使用
  5. python爬虫爬取音乐单曲_Python爬取qq音乐的过程实例
  6. c语言下列循环的循环次数,在C语言中,若i=3,则语句 while (i) { i--; break;}的循环次数为 答案:1...
  7. 用xib自定义UIView并在代码中使用--iOS
  8. Hadoop有什么用
  9. MYSQL中日期与字符串间的相互转换
  10. 30. 价格区间设置
  11. XML案例——Jsoup网页爬虫 XML配置参数
  12. 冒险岛无敌外挂代码诠释
  13. 直播场景音频降噪,传统算法 VS AI 算法对比和实践
  14. mysql execute stmt_execute_prepared_stmt()
  15. 2022-7 一套鼠标键盘控制两台及以上电脑
  16. 超详细手把手教你App上线AppStore
  17. 什么是 MAC 地址?
  18. 【转】浅谈C# 多态的法力
  19. python 数学公式_python的数学算法函数及公式用法
  20. MySQL主从同步数据

热门文章

  1. HDFS RPC 调度策略 DecayRpcScheduler 与 BackOff
  2. sonar代码质量检测告警“static“ base class members should not be accessed via derived types
  3. KVM虚拟化,云平台
  4. php oop java oop_php oop的作用
  5. 给深度学习新手做项目的10个建议
  6. 民宿类APP开发功能
  7. mimemessage类是什么_邮件发送类
  8. 梦想经不起等待 -- 美文转载
  9. 六十甲子亡命安葬山向宜忌
  10. Thymeleaf th:each遍历,th:if、th:switch 条件判断,input,select,radio 回显赋值