MD5算法的实现以及相关应用(web信息检索实验)

MD5算法的实现以及相关应用

1.基本介绍

在Web信息的检索过程中,对文本的保存和建立文本索引是文本检索的关键步骤。而保存文本,并对这些文本建立索引,就需要对已有的网页进行预处理。而MD5算法就是预处理两个过程中的其中一个——网页去重的常用算法。MD5(Message Digest5)算法,顾名思义,这个算法的基本思想是通过信息摘要的方式,将消息的特征进行提取,网页去重则就是基于提取的这些特征来判重,完成网页去重的目的。

2.算法描述

消息长度任意,但准备时需将其分成若干个512bit的组,每一分组又被划分为16个32bit的子分组,经过处理后,输出四个32bit的分组,级联后生成128bit的消息摘要。

具体步骤如下:

①填充:对消息进行填充,使其字节长度对512取余的结果为448,即信息的长度为N*512+448 bit => N*64+56 Byte(N为正整数)。而填充的方法是将信息后填充一个1和若干0,直到满足信息长度的条件。最后,再附加一个一64位的二进制数来表示填充前的长度。填充后的信息长度为512bit的整数倍。

②初始化MD缓冲器:用4个32bit的寄存器,每轮输出128bit。。用A,B,C,D四个32bit字,将初始存数以十六进制表示:

A = 0x01234567;B = 0x89ABCDEF;C = 0xFEDCBA98;D = 0x76543210

③处理分组:通过4轮循环的函数处理各个分组,循环次数是512bit分组数。4轮循环的每一轮是相似的,每次操作对A,B,C,D中的三个做一次非线性函数运算,再将结果加上第四个变量,再将所得结果向右环移一个不定的数, 并加上A,B,C,D中之一。 最后,用该结果取代 A,B,C,D中之一。

四次非线性函数如下:

f(x,y,z) =(x&y)|((~x)&z)

g(x,y,z) =(x&z)|(y&(~z))

h(x,y,z) =x^y^z

i(x,y,z)=y^(x|(~z))

其中&是与,|是或,~是非,^是异或

通过这四个函数,说明了如果x、y、z的对应位是独立和均匀的,那么结果的每一位也是独立和均匀的。

④输出消息摘要:将L个分组处理完后,其输出便是所需的128bit的消息摘要。

3.算法特点

①压缩性:对于任意长度的输入信息,经过MD5算法的处理后,其输出的位数是固定的;

②易于计算:从原数据能够很容易计算出MD5值;

③抗修改性:对原数据进行任何改动(即使只修改1个字节),都会使得所得到的MD5值有很大不同。

④强抗碰撞:即使已经获得了原数据和其MD5值,但想找到一个具有相同MD5值的数据是非常困难的,即意味着伪造原数据的难度非常大;

⑤不可逆性:不能从MD5值反向推导出原数据值,所以MD5算法的过程也可以看作是一个信息加密的过程。

4.算法应用

①一致性验证:

这是MD5算法最典型的应用,也是在学习Web信息检索过程中,用于网页去重的方法。其应用方式是对一段信息产生信息摘要,这段信息摘要就类似于人的指纹,对于每一段信息来说都是属于自身的独特标志,所以又被称作“数字指纹”。而网页去重则通过比对这些信息摘要,判断是否有重复的网页,实现网页去重的目的。

另一方面,“数字指纹”还可以用在软件下载站、论坛数据库、系统文件安全等方面,用于文件校验。

②数字签名:

通过为一段信息生成信息摘要,达到“指纹”的作用。在防止被“篡改”的信息上生成一个MD5的值并记录,如果有其他人对这段信息进行了任何修改,再次对这段信息进行一次MD5算法后,就可以发现有人修改看文件的内容,这个功能是对MD5算法抗修改性最好的体现。

③安全访问认证

用通俗的话来说,就是我们常用的“登录密码”,当用户进行登录是,将用户输入的密码进行MD5 Hash运算,得到的结果与保存的正确密码的MD5值进行比较,以此来确定输入的密码是否正确。

而且,由于MD5算法的不可逆性,我们可以避免有管理员权限的用户获取明码,使得用户密码的安全星得到保障。

5.总结

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式,简单来看,就是MD5 = 数据压缩 + 数据加密。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值