实验九散列函数实验Word文件下载.docx
《实验九散列函数实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验九散列函数实验Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
散列函数应知足以下要求:
(1)算法公布,不需要密钥。
(2)具有数据紧缩功能,可将任意长度的输入转换为固定长度的输出。
(3)已知m,容易计算出H(m)。
(4)给定消息散列值H(m),要计算出m在计算上是不可行的。
(5)对任意不同的输入m和n,它们的散列值是不能相同的。
一、MD5算法
MD5(Message-DigestAlgorithm5)即信息-摘要算法,是MD4算法的改良;
算法的输入为任意长度的消息,分为512比特长的分组,输出为128比特的消息摘要。
处置进程如下:
(1)对消息进行填充,使其比特长度为n512+448(n为正整数),填充方式是固定的:
第一名为1,其后列位为0。
(2)附加消息长度,利用上一步骤留出的64比特以小端(最低有效字节/位存储于低地址字节/位)方式来表示消息被填充前的长度,假设消息长度大于264,那么以264为模数取模。
(3)对消息摘要缓冲区初始化,算法利用128比特长的缓冲区来存储中间结果和最终散列值,将缓冲区表示成4个32比特长的寄放器A、B、C、D,每一个寄放器以小端方式存储数据,初始值为(十六进制,低位字节在前)A=01234567,B=89ABCDEF,C=FEDCBA98,D=。
(4)以分组为单位对消息进行处置,每一个分组都通过紧缩函数HMD5处置;
HMD5有4轮处置进程,每轮有16步迭代,4轮处置进程的处置结构一样,所用逻辑函数不同,别离表示为
F、G、H、I;
每轮的输入为当前处置的消息分组缓和冲区当前的值,输出仍寄存在缓冲区中。
最后第四轮的输出与第一轮输入的缓冲区值V相加,相加时将V看做4个32比特的字,每一个字与第四轮输出的对应的字按模232相加,相加结果为HMD5的输出。
(5)消息的所有分组均被处置完后,最后一个HMD5的输出即为产生的128位消息摘要。
二、SHA-1/256算法
SHA的全称为SecureHashAlgorithm(平安杂凑算法),SHA家族的五个算法别离是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,由(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布,后四者有时并称为SHA-2。
SHA-1基于MD4算法,算法的输入最大长度为264-1比特,分为512比特长的分组,输出为160比特的消息摘要。
(1)对消息进行填充,与MD5第一步相同。
(2)附加消息长度,与MD5第二步类似,不同的是以大端(最高有效字节/位存储于低地址字节/位)方式来表示消息被填充前的长度。
(3)对消息摘要缓冲区初始化,算法利用160比特长的缓冲区来存储中间结果和最终散列值,将缓冲区表示成5个32比特长的寄放器A、B、C、D、E,每一个寄放器以大端方式存储数据,初始值为(十六进制,高位字节在前)A=,B=EFCDAB89,C=98BADCFE,D=,E=C3D2E1F0。
(4)以分组为单位对消息进行处置,每一个分组都通过紧缩函数HSHA处置;
HSHA有4轮处置进程,每一轮又有20步迭代;
4轮处置进程的处置结构一样,所用逻辑函数不同,别离表示为f1、f2、f3、f4;
最后第四轮的输出与第一轮输入的缓冲区值V相加,相加时将V看做5个32比特的字,每一个字与第四轮输出的对应的字按模232相加,相加结果为HMD5的输出。
(5)消息的所有分组均被处置完后,最后一个HSHA的输出即为产生的160位消息摘要。
SHA-256利用6个逻辑函数,均基于32位的字进行操作,算法输出的消息摘要为256位。
SHA与MD5处置进程类似,要紧区别在于所利用的紧缩函数不同。
三、HMAC算法
HMAC的全称为Hash-basedMessageAuthenticationCode(基于散列的消息认证码),HMAC将散列函数作为一个黑盒利用,,散列函数的实现可作为实现HMAC的一个模块,并可利用新模块代替旧模块。
设H为嵌入的散列函数,M为HMAC的输入消息(包括散列函数所要求的填充位),Yi(0≤i≤L-1)是M的第i个分组,L为M的分组数,b为一个分组中的比特数,n为嵌入的散列函数所产生的散列值的长度,K为密钥,假设密钥长度大于b,那么将密钥输入到散列函数中产生一个n比特长的密钥,K+是左侧将填充0后的K,K+的长度为b比特,ipad为b/8个00110110,opad为b/8个01011010;
那么算法的输出可表示为:
【实验环境】
ISES客户端
MicrosoftCLRDebugger2005或其它调试器
【实验步骤】
一、散列值计算
(1)选择明文格式,输入明文;
(2)勾选计算利用的算法,默以为全选;
(3)点击“计算”按钮,利用所选算法别离计算明文的散列值;
算法对应的文本框中将显示相应的散列值,如下图所示。
二、MD5值比对
(1)点击“扩展实验”框中的“MD5值比对”按钮,进入MD5值比对窗体。
(2)相同报文的MD5散列值比对别离在第一组报文和第二组报文处输入相同的报文值,并计算MD5散列值;
点击“异或比较”按钮,进行散列值的比对,非0元个数即为散列值中互不相同的位数,此处为0,即相同报文的散列值相同,如下图所示。
(3)相似报文的MD5散列值比对维持第一组报文中的内容不变,修改第二组报文值中的最后一名,计算其散列值,并进行异或比较,结果如下图所示;
能够看出对两个极为相似的报文进行散列后取得的散列值不同是超级大的。
三、MD5扩展实验
(1)点击“扩展实验”框中的“MD5扩展实验”,进入MD5扩展实验窗体。
(2)在测试向量文本框中输入任意长度的ASCII字符串,点击“运行”,MD5算法的运行结果会出此刻信息摘要文本框中,如下图所示。
(3)观看MD5算法的执行进程。
点击“算法演示”按钮,激活算法演示界面,如下图所示,其中表示模232加。
1在“数据分组编号(q)”文本框中输入一个小于“数据最大分组数”文本框中的非负整数,然后点击“开始”,启动算法执行,如下图所示。
②点击“第一轮函数变换”按钮,进入轮函数变换窗口。
依次点击界面中的按钮,取得MD5算法中的各类中间步骤结果,如下图所示。
③依次执行“第二轮函数变换”,“第三轮函数变换”,“第四轮函数变换”后,进入该组信息摘要变换的最后一步。
点击最下面的加法异或按钮,取得该分组的信息摘要结果。
具体如下图所示。
四、SHA扩展实验
SHA扩展实验包括SHA1扩展实验和SHA2-224/256扩展实验等,此处以SHA1扩展实验为例,其他可参照完成。
点击扩展实验下的“SHA1扩展”按钮,进入SHA1扩展实验的主页面。
(1)在测试向量文本框中输入任意长度的ASCII字符串,点击“运行”,SHA-1算法的运行结果会出此刻信息摘要文本框中,如下图所示。
(2)观看SHA-1算法的执行进程。
点击“算法演示”按钮,激活算法演示界面,如下图所示。
1在“数据分组编号(q)”文本框中输入一个小于“数据最大分组数”文本框中的非负整数,然后点击“开始”,启动算法执行。
依次点击界面中的按钮,取得SHA-1算法中的各类中间步骤结果,如下图所示。
点击最下面的模232加法按钮,取得该分组的信息摘要结果。
④观看该分组的状态表。
点击“状态表(q)”按钮,如下图所示。
五、SHA-1分步计算
(1)点击“扩展实验”框中的“SHA1分步计算”按钮,进入SHA1分步骤计算窗体。
(2)输入明文实验系统支持最长两个数据块的明文,即512+448比特(120字节),此处以输入四次26个字母即104字节为例。
(3)消息填充依次点击“填充1”按钮、“填充0”按钮、“填充长度与分组”按钮,完成消息的填充,如下图所示,窗体右边每一步为对应的原理。
(4)计算首个数据块的摘要点击“初始化”按钮,初始化缓冲区变量;
点击“扩充第0—15组明文”和“扩充第16—79组明文”按钮,完成对明文的扩充;
点击“读取变量初始值”和“4轮共80步计算”按钮,完成各轮核心紧缩函数的运算;
点击求和运算,生成首个数据块最终160位的散列值。
上述进程如下图所示。
(5)计算后续数据块的摘要
点击“设置H0—H4”按钮,计算后续数据块的散列值,如下图所示。
六、HMAC
七、算法跟踪
点击“算法跟踪”框中相应的算法跟踪按钮,如“MD5跟踪”按钮,进入调试器,选择对应的算法函数进行算法跟踪;
跟踪完成后会自动返回实验界面显示计算结果;
切换回调试器,停止调试,关闭调试器,不保留工程。
具体步骤可参照古典密码实验中实验步骤二。