博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
散列(hash)算法与应用
阅读量:2134 次
发布时间:2019-04-30

本文共 1564 字,大约阅读时间需要 5 分钟。

散列(hash)算法与应用目录

散列(hash)算法与应用

最近在准备期末的考试,复习然后顺便写下来记录笔记。

本笔记记录的是SHA和MD算法。

一、散列(hash)算法

1. 概念

把任意长度的输入通过单向散列函数H()计算后,变换成固定长度的输 出,即散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远 小于输入的空间,不同的输入可能会产生相同的输出,但不能由散列值来 唯一确定输入值。常见的散列算法:报文摘要算法MD安全散列算法SHA

2.特点

  1. 对于任意给定的a,若a≠b,则H(a)不等于H(b)。
    • 输入不同的消息极小概率下得到相同的散列值
    • 一样的散列值一定来自相同的消息
  2. 对于任意给定的散列值y,不能通过计算找到x,使得H(x)=y。
    • 单向、不可逆,即使知道了散列算法,也不能由散列值得到原始消息

3.散列算法应用

  1. 完整性检测

二、文章摘要算法(Message Digest)

1.概念

MD是面向字节的加密散列函数,能够把任意长度的数据计算成为128 比特固定长度的散列值,也叫消息摘要或指纹。容易计算及不可逆性压缩性抗修改性抗碰撞性是它的优点。

  • MD2(见RFC1319),是为内存资源有限的8位机或8位系统设计开 发的
  • MD4(见RFC1320),是为32位机设计开发的
  • MD5(见RFC1321),于1991年由Ronald Rivest提出,解决了 MD4的潜在安全弱点

2.MD5算法分组操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K69QqgnM-1606107237645)(C:\Users\to494295\AppData\Roaming\Typora\typora-user-images\image-20201123114449077.png)]

  1. 长度字段为64位,(报文+填充)mod 512=448,保证总长是512的整数倍;
  2. 报文以512位为单位分段,前一段MD5的运算结果和当前段数据作为MD5输 入,运算结果为128位;
  3. 初始向量IV和第一段数据作为MD5输入。

三、安全散列(Secure Hash Algorithm)

1.概念

安全Hash函数(SHA)是使用最广泛的Hash函数。SHA由美国国家安全局设计并作为美国政府标准发布出来的。SHA-1生成160比特的散列值,但生成速度比MD5慢,但更为安全。SHA-1(见RFC3174),是SHA家族中使用最为广泛的散列算法, 广泛应用于各种应用和协议中,如TLS(传输层安全)、SSL(安全 套接字层)、SSH(Secure Shell)和 Ipsec 等。SHA-1算法和MD5算法都有MD4算法导出,因此他们俩的特点、缺陷、应用场景基本是相同的。

2.分类

有hash-1,还有四种变体:SHA-224,SHA-256,SHA-384,SHA-512, 这些并称为SHA-2。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jgd8H1RB-1606107237650)(散列(hash)算法与应用.assets/image-20201123115519020.png)]

四、SHA-1与MD5之间的异同

相同点:

  • SHA-1有着与MD5相同的填充过程;
  • SHA-1也将报文分成512位长度的数据段;
  • 对数据段进行与MD5相同的分组操作。、

不同点:

  • SHA-1初始向量和每一段数据段的运算结果是5个32位的字,即160位;
  • 每一级操作进行20次迭代运算,4级共80次迭代运算
  • 需要将16个32位字的数据段扩展为80个32位字;
  • 扩展后的80个32位字分别参加80次迭代运算;
  • 每一级操作使用相同的常量,因此,只需要4个不同的常量。

转载地址:http://ehugf.baihongyu.com/

你可能感兴趣的文章
【Python】easygui小甲鱼
查看>>
【Python】关于Python多线程的一篇文章转载
查看>>
【Pyton】【小甲鱼】文件
查看>>
【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜
查看>>
【Pyton】【小甲鱼】异常处理:你不可能总是对的
查看>>
APP性能测试工具
查看>>
【Pyton】【小甲鱼】类和对象
查看>>
压力测试工具JMeter入门教程
查看>>
作为一名软件测试工程师,需要具备哪些能力
查看>>
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>
【Loadrunner】【浙江移动项目手写代码】代码备份
查看>>
Python几种并发实现方案的性能比较
查看>>
[Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
查看>>
Jmeter之正则
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>