散列(hash)算法与应用
散列(hash)算法与应用
最近在准备期末的考试,复习然后顺便写下来记录笔记。 本笔记记录的是SHA和MD算法。
一、散列(hash)算法
1. 概念
把任意长度的输入通过单向散列函数H()计算后,变换成固定长度的输 出,即散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远 小于输入的空间,不同的输入可能会产生相同的输出,但不能由散列值来 唯一确定输入值。常见的散列算法:报文摘要算法MD、安全散列算法SHA
2.特点
- 对于任意给定的a,若a≠b,则H(a)不等于H(b)。 输入不同的消息极小概率下得到相同的散列值 一样的散列值一定来自相同的消息
- 对于任意给定的散列值y,不能通过计算找到x,使得H(x)=y。 单向、不可逆,即使知道了散列算法,也不能由散列值得到原始消息
3.散列算法应用
- 完整性检测
二、文章摘要算法(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 o494295AppDataRoamingTypora ypora-user-imagesimage-20201123114449077.png)]
- 长度字段为64位,(报文+填充)mod 512=448,保证总长是512的整数倍;
- 报文以512位为单位分段,前一段MD5的运算结果和当前段数据作为MD5输 入,运算结果为128位;
- 初始向量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个不同的常量。