- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
密
码
学
课
程
设
计
指导老师:谢林
班级:信息安全10-1
目录
实验一 MD5散列函数的实现…………………………………………3
1.1算法概述……………………………………………………………6
1.2算法设计思路………………………………………………………6
1.3实现算法分析………………………………………………………6
1.4运行结果……………………………………………………………11
1.5密码安全性分析……………………………………………………11
实验二 分组密码AES加密解密………………………………………11
2.1算法概述……………………………………………………………11
2.2算法设计思路………………………………………………………12
2.3实现算法分析……………………………………………………13
2.4运行结果……………………………………………………………14
2.5密码安全性分析…………………………………………………15
实验三RSA加密算法的实现…………………………………………15
3.1算法概述……………………………………………………………15
3.2算法设计思路………………………………………………………15
3.3实现算法析………………………………………………………16
3.4运行结果……………………………………………………………19
3.5密码安全性分析………………………………………………19
实验体会及收获……………………………………………………….19
实验一 MD5散列函数的实现
1.1算法概述
MD表示消息摘要,对输入的任意长度消息,算法产生128位的散列值(或消息摘要)。MD5为计算机领域广泛使用的一种散列函数,用以提供消息的完整性保护。
1.2算法设计思路
MD5散列函数的处理过程分为如下几步:
(1)消息填充:对原始消息填充,使得其比特长在模512下余448,即填充后消息的长度为512的某一倍数减64.这一步是必需的,即使原始消息的长度已经满足要求,仍需要填充。例如:消息的长度正好为448bit,则需要填充512bit,使其长度为960bit,因此填充的比特数在1到512之间。填充方式是固定的:第一位为1,其他位为0,例如需要填充100bit,则填充一个1和后面附上99个0。
(2)添加消息长度:在第一步填充后,留有64个bit位,这64bit用来填充消息被填充前的长度。如果消息长度大于264,则以264取模。
前两步完成以后,消息的长度为512的倍数(设倍数为L)。可将消息表示成分组长为512的一系列分组Y0,Y1,…Yl-1。每一个512bit分组是16个(32bit)字,因此消息中的总字数为N=16L。
(3)初始化MD缓冲区:MD5算法使用128bit长的缓冲区以存储中间结果和最终Hash值。缓冲区可表示为4个32位长的寄存器(A,B,C,D),将存储器初始化为以下的32位整数:AB=EFCDAB、C=98BADCFE、D每个寄存器都以little-endian方式存储数据,也就是最低有效字节存储在低位地址字节位置,4个寄存器按如下存储:
AB=89ABCDEF,C=FEDCBA98,D=7654321
(4)以分组为单位进行消息处理:每个分组Ya都经过一个压缩函数HMD5处理,包括4轮处理过程,MD5算法是一种迭代型Hash函数,压缩函数HMD5是算法的核心。压缩函数按如下方式工作:
a.四个轮运算的结构相同,但各轮使用不同的基本逻辑函数,我们分别称之为F、G、H和I;
b.每轮的输入时当前要处理的512位的分组Yq和128位缓冲区的当前值A、B、C、D的内容,输出仍然放在缓冲区中产生新的A、B、C、D;
c.每轮的处理过程还需要使用常数表T中元素的1/4.第4轮的输出再与第1轮的输入CVq相加,相加时将CVq看作4个32bit的字,每个字与第4轮输出的对应的字按模232相加,相加的结果就是本轮压缩函数的输出。
Hmd5压缩函数要用到常数表T,该表有64个元素。该表通过正弦函数构建的,这个表提供了一个随机化的32bit模式集,它将消除输入数据的任何规律性。
(5)输出:消息的所有L个分组被处理完以后,最后一个HMD5的输出即为产生的消息摘要(Hash值)。
下面我们具体描述一下MD5的压缩函数:
压缩函数中有四轮处理过程,每轮对缓冲区A,B,C,D进行16步迭代运算,单步操作如图所示:
MD5压缩函数要经过四轮处理,每轮又包括16步,且每轮以不同次序使用16个字。其中第一轮以字的初始次序使用,第二轮到第四轮分别对字的次序i做置换后得到一个新次序,然后以新次序使用16个字。三个置换分别为;
四轮处理过程中分别使用基本的
文档评论(0)