联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame

HASH GAME - Online Skill Game ET 300Hash算法实验原理及哈希函数简介

发布时间:2025-02-11 19:27:18  点击量:

  HASH GAME - Online Skill Game GET 300

HASH GAME - Online Skill Game GET 300Hash算法实验原理及哈希函数简介

  安全性:SHA 所产生的摘要比 MD5 长 32 位。若两种散列函数在结构上没有任何问题的线 更安全。 速度: 两种方法都是主要考虑以 32 位处理器为基础的系统结构。 SHA 的运算步骤比 MD5 但 多了 16 步,而且 SHA 记录单元的长度比 MD5 多了 32 位。因此若是以硬件来实现 SHA,其速度大 约比 MD5 慢了 25%。 简易性:两种方法都是相当的简单,在实现上不需要很复杂的程序或是大量存储空间。然 而总体上来讲,SHA 对每一步骤的操作描述比 MD5 简单。 二.SHA1 哈希算法流程动画演示 对于任意长度的明文,SHA1 首先对其进行分组,使得每一组的长度为 512 位,然后对这些 明文分组反复重复处理。 对于每个明文分组的摘要生成过程如下:

  一.SHA1 与 MD5 差异 SHA1 对任意长度明文的预处理和 MD5 的过程是一样的,也即预处理完后的明文长度是 512 位的整数倍,但是有一点不同,那就是 SHA1 的原始报文长度不能超过 2 的 64 次方,然后 SHA1 生成 160 位的报文摘要。SHA1 算法简单而且紧凑,容易在计算机上实现。 表 1-4-5 列出了对 MD5 及 SHA 的比较差异之处。 让我们根据各项特性, 简要说明其间的不同。

  一.哈希函数简介 信息安全的核心技术是应用密码技术。密码技术的应用远不止局限于提供机密性服务,密码 技术也提供数据完整性服务。 密码学上的散列函数(Hash Functions)就是能提供数据完整性保障 的一个重要工具。Hash 函数常用来构造数据的短“指纹”:消息的发送者使用所有的消息产生 一个附件也就是短“指纹”, 并将该短“指纹”与消息一起传输给接收者。 即使数据存储在不安 全的地方,接收者重新计算数据的指纹,并验证指纹是否改变,就能够检测数据的完整性。这是 因为一旦数据在中途被破坏,或改变,短指纹就不再正确。 散列函数是一个函数,它以一个变长的报文作为输入,并产生一个定长的散列码,有时也称 为报文摘要,作为函数的输出。散列函数最主要的作用于是用于鉴别,鉴别在网络安全中起到举 足轻重的地位。鉴别的目的有以下两个:第一,验证信息的发送者是真正的,而不是冒充的,同 时发信息者也不能抵赖, 此为信源识别; 第二, 验证信息完整性, 在传递或存储过程中未被篡改, 重放或延迟等。 二.哈希函数特点 密码学哈希函数(cryptography hash function,简称为哈希函数)在现代密码学中起着重 要的作用, 主要用于对数据完整性和消息认证。 哈希函数的基本思想是对数据进行运算得到一个 摘要,运算过程满足: 压缩性:任意长度的数据,算出的摘要长度都固定。 容易计算:从原数据容易算出摘要。 抗修改性:对原数据进行任何改动,哪怕只修改 1 个字节,所得到的摘要都有很大区别。 弱抗碰撞:已知原数据和其摘要,想找到一个具有相同摘要的数据(即伪造数据),在计 算上是困难的。

  强抗碰撞:想找到两个不同的数据,使它们具有相同的摘要,在计算上是困难的。 三.针对哈希函数的攻击 与传统密码体制的攻击方式相比,对散列函数的攻击方法主要有两种: 穷举攻击:它可以用于任何类型的散列函数的攻击,最典型的方式就是所谓的“生日攻 击”。采用生日攻击的攻击者将产生许多明文消息,然后计算这些明文消息的指纹(摘要),进 行比较。 利用散列函数的代数结构:攻击其函数的弱性质。通常的有中间相遇攻击、修正分组攻击 和差分分析攻击等。 四.MD5 哈希函数 1990 年 R.L.Rivest 提出哈希函数 MD4。MD4 不是建立在某种密码系统和假设之上,而是一 种直接构造法。所以计算速度快,特别适合 32 位计算机软件实现,对于长的信息签名很实用。 MD5 是 MD4 的改进版,它比 MD4 更复杂,但是设计思想相似并且也产生了 128 位数列。 五.MD5 哈希算法流程动画演示 对于任意长度的明文,MD5 首先对其进行分组,使得每一组的长度为 512 位,然后对这些明 文分组反复重复处理。 对于每个明文分组的摘要生成过程如下: (1)将 512 位的明文分组划分为 16 个子明文分组,每个子明文分组为 32 位。 (2)申请 4 个 32 位的链接变量,记为 A、B、C、D (3)子明文分组与链接变量进行第 1 轮运算。 (4)子明文分组与链接变量进行第 2 轮运算。 (5)子明文分组与链接变量进行第 3 轮运算。 (6)子明文分组与链接变量进行第 4 轮运算。

  一个添加位后的明文可以划分为 L 份明文组分, 而一个明文分组又可以划分为 16 份子明文分组。 MD5 有 4 轮非常相似的运算,每一轮包括 16 个类似的步骤,每一个步骤的数据处理都是针 对 4 个 32 位记录单元中数据进行的。这 4 个 32 位记录单元称为“链接变量”,分别标记为 A、 B、C、D。这 4 个链接变量的初始值以 16 进位制表示如下:A=0x01234567,B=0x 89ABCDEF.C =0x FEDCBA98,D=0x 76543210。链接变量用于存放中间散列函数值,经过 4 轮运算(共 64 个步骤)之后,链接变量 A,B,C,D 中的 128 位即为中间散列函数值。中间散列函数值作为下 一个明文分组的输入继续使用,当所有的明文分组都处理完毕后,链接变量 A,B,C,D 中的 128 位数据就是摘要。 八.MD5 第 1 轮运算 MD5 有 4 轮非常相似的运算, 每一轮包括 16 个类似的步骤,当第 1 轮运算中的第 1 步骤开始 处理时,A、B、C、D 四个链接变量中的值先赋值到另外 4 个记录单元 A′,B′,C′,D′中。 这 4 个值将保留,用于在第 4 轮的最后一个步骤完成之后与 A,B,C,D 进行异或操作。 第 1 轮的操作程序为 FF(a,b,c,d,M[k],S,T[i]) 它表示的逻辑为:a←b((F(b,c,d)M[k]T[i])S) 其中,a、b、c、d 为 32 位的变量,M[k]表示相应的子明文分组,对于 4 轮共 64 步的 MD5 算法中 T[i]是 64 个不同的固定的数值,S 为循环左移的位数,F(x,y,z)是第一轮的逻辑函 数,最后将结果存放在链接变量 A 中。 第 1 轮 16 步的固定值 T[i]值如表 1-4-1 所示。

  (7)链接变量与初始链接变量进行求和运算。 (8)链接变量作为下一个明文分组的输入重复进行以上操作。 (9)最后,4 个链接变量里面的数据就是 MD5 摘要。 六.MD5 分组过程 对于任意长度的明文,MD5 可以产生 128 位的摘要。任意长度的明文首先需要添加位数,使 明文总长度为 448(mod512)。在明文后添加位的方法是第一个添加位是 l,其余都是 0。然后 将真正明文的长度(没有添加位以前)以 64 位表示,附加于前面已添加过位的明文后,此时的 明文长度正好是 512 位的倍数。当明文长度大于 2 的 64 次方时,仅仅使用低 64 位比特填充,附 加到最后一个分组的末尾。 经过添加处理的明文, 其长度正好为 512 位的整数倍, 然后按 512 位的长度进行分组 (block) ,

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: