MD5算法体会
两种通用加密算法(MD5RSA)使用

两种通用加密算法(MD5RSA)使用一、MD5算法:MD5(Message Digest Algorithm 5)是一种常用的散列函数,用于确保数据的完整性和一致性。
MD5算法接收一段明文,并输出128位(16字节)的散列结果。
其特点如下:1.不可逆性:MD5算法是单向函数,散列结果无法通过逆向计算得知原始明文。
即使输入的明文只有微小的差异,其输出的散列结果也会有较大的差异。
2.高效性:相对于其他散列算法,MD5算法的计算速度比较快,适合用于加密处理较小的数据块。
3.容易碰撞:由于MD5算法的散列结果长度固定且较短,因此存在多个不同的明文可以得到相同的散列结果,这被称为碰撞。
碰撞攻击可以通过选择特定的输入来篡改数据的完整性。
MD5算法的应用场景主要包括:1.用于验证文件完整性:通过计算文件的MD5值,可以在传输过程中验证文件是否被篡改。
2.存储用户密码:在存储用户密码之前,首先对其进行MD5加密,以保护用户密码的安全。
3.数据校验:可以对数据进行MD5散列,将散列结果与预设的散列结果进行比对,以验证数据的完整性。
二、RSA算法:RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,常用于数据的加密和数字签名。
RSA算法使用两个密钥:公钥(Public Key)和私钥(Private Key)。
其特点如下:1.非对称性:RSA算法使用一对相关的密钥进行加密和解密操作,其中公钥用于加密数据,私钥用于解密数据。
公钥可以公开,而私钥必须保密,确保只有私钥的持有者才能解密数据。
2.安全性:RSA算法的安全性基于大数分解的困难性,即将一个非常大的数分解成其素因子的难度。
只要包含足够大的素数,RSA算法就可以提供高度的安全性。
3.数字签名:RSA算法可以用于生成和验证数字签名。
发送数据者可以使用私钥对数据进行签名,接收者使用公钥验证签名的有效性,以确保数据的完整性和真实性。
RSA算法的应用场景主要包括:1.数据加密:RSA算法可以用于加密敏感数据,只有使用私钥进行解密的用户才能获取原始数据。
密码学MD5实验报告

实验四:密码学MD5实验报告
专业:计算机科学与技术班级:2015级姓名:孟亚超学号:2015040
String md5=get(exe);
long endTime =System.nanoTime();
double time=endTime-beginTime;
System.out.println("【运行结果】");
System.out.println("选择的文件是: "+exe.getName());
System.out.println("该文件MD5值: "+md5);
System.out.println("计算MD5用时: "+(time/1000000)+"毫秒");
}
}
程序运行结果截图
实验结果分析
我们不难发现,这两个EXE文件虽然内容不同,但是MD5值却是相同的!
MD5,用于确保信息传输完整一致。
是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。
关于MD5算法的分析及其性能优化

关于MD5算法的分析及其性能优化本文主要介绍了MD5算法的实现原理和对源数据信息的加密流程,然后从算法实现的角度,依据当前CPU计算机制,对MD5算法的计算时间的消耗进行分析,并提出了相应的性能优化建议,从而提升MD5算法的计算速度。
标签:MD5;优化;性能优化1 概述随着科学技术的发展以及互联网络的不断应用,信息安全的重要性已经成为继大数据、云计算之后的IT行业热门发展方向。
在信息安全体系中,信息加密是其中非常重要的部分,也是应对各种网络攻击或者暴力破解工具很好的应对手段。
MD5算法是目前应用较为广泛的一种算法,它允许应用系统将不同数据信息加密成固定128位的加密字符串,从而有效地保证了数据信息的保密性、完整性和可用性。
然而MD5算法过程繁琐、算法复杂,在具体实现时必须考虑其计算性能,如果加密时间过长,将会为实际应用带来非常差的用户体验。
所以对于MD5算法的研究以及对其计算性能的优化分析,对于MD5算法实现来说,具有非常大的现实意义。
2 MD5算法MD5是Riverst在之前MD2,MD3,MD4的基础上,经过升级优化开发而来。
采用MD5算法,可以让任意长度的数据信息,变成一个128位固定长度的大整数的加密形式,从而实现了数据信息的加密,而MD5算法的加密过程是一个不可逆的过程,在一定程度上保证了数据信息的安全性,对于一些暴力破解、密码嗅探的工具来说,对MD5算法加密的数据解密将是一个工作量非常大的过程。
MD5算法的处理过程需要经过以下几个阶段:字符填充,长度加长,块分解,变量初始化,块处理。
其中,MD5算法的字符填充,因为MD5算法最终是对512位的数据块进行处理,所以对于整体数据源长度不是512倍数的,需要将其字符填充,是最终的长度为512位长度的倍数减去64位。
然后信息源长度加长,即用64位长度表示字符填充之前原信息源长度,填充到最后64位,最终使得到的字符串长度为512位的倍数。
第三步,块分解,将最终得到的字符串以512位长度为单位,对其进行划分,形成最终的数据块,第四步,生成变量,即生成四个32位长的十六进制变量。
MD5算法实验报告

MD5算法实验报告实验报告:MD5算法的原理与应用一、实验目的本实验旨在通过研究MD5(Message-Digest Algorithm 5)算法的原理和应用,了解其工作原理和实现过程,并掌握其具体应用技巧。
二、实验内容1.了解MD5算法的基本原理和特点;2.分析MD5算法的具体实现过程;3.实现一个简单的MD5加密程序,并进行测试;4.掌握MD5算法的应用技巧。
三、实验原理1. 输入任意长度的数据,输出固定长度的Hash值,通常为128位;2. 安全性较高,Hash值的变化能较好地反映原始数据的变化;3. 不可逆性:无法通过Hash值反推出原始数据;4. Hash值相同的概率很低,冲突概率较小。
1.数据填充:对输入数据进行填充,使其长度满足一定要求;2.划分数据:将填充后的数据划分为多个512位的数据块;3.初始化变量:设置四个32位的变量,作为初始值;4.处理数据块:对每个数据块进行处理,分为四轮,每轮包括四个步骤,即置换、模运算、加法和循环左移操作。
5. 输出结果:将四个32位变量连接起来,即得到最终的128位Hash值。
四、实验过程1.学习MD5算法的原理和实现细节;2. 使用Python编程语言实现一个简单的MD5加密程序,并进行测试。
实验代码如下:```import hashlibdef md5_encrypt(source):md5 = hashlib.md5md5.update(source.encode('utf-8'))return md5.hexdigestif __name__ == '__main__':source_str = input("请输入要加密的字符串:")encrypted_str = md5_encrypt(source_str)print("加密后的字符串为:", encrypted_str)```五、实验结果与分析通过上述实验代码,可以输入一个字符串,程序将会对该字符串进行MD5加密,并将加密结果输出。
《信息安全》实验报告3MD5的计算和破解

《信息安全》实验报告3MD5的计算和破解1.引言信息安全是一个重要的领域,加密算法是其中的核心技术之一、MD5(Message Digest Algorithm 5)是一种常用的哈希算法,广泛应用于文件校验、数据完整性验证等等领域。
本实验旨在通过计算和破解MD5,深入了解MD5的工作原理和安全性。
2.实验目的(1)了解MD5算法的基本原理;(2)掌握MD5算法的计算过程;(3)通过破解MD5,了解其安全性问题。
3.实验过程3.1MD5算法的基本原理MD5算法通过对输入的字符串进行分组,然后对每个分组进行一系列的位运算和逻辑运算,最终生成一个128位(16字节)的哈希值。
MD5算法的基本原理如下:(1)填充:在输入字符串的末尾填充一些字节,使得输入字符串的长度能被64整除。
(2)初始化:将16进制的常数赋给4个32位寄存器A、B、C、D。
(3)分组:将填充后的输入字符串分为若干个512位的分组。
(4)处理:对每个分组进行一系列的位运算和逻辑运算。
(5)生成哈希值:将处理后的结果按一定顺序连接起来,得到一个128位的哈希值。
3.2MD5的计算过程通过Python编程语言实现MD5算法的计算过程如下:(1)初始化四个32位寄存器A、B、C、D,并赋初值。
(2)将待计算的字符串分组,每个分组512位。
(3)对每个分组进行一系列的位运算和逻辑运算,生成一个128位的哈希值。
(4)将生成的哈希值转换为16进制字符串。
3.3MD5的破解MD5算法虽然被广泛应用,但是也存在一定的安全性问题。
MD5哈希值是固定长度的,而输入字符串的长度可以是任意长度的,这就导致了哈希碰撞(hash collision)的概率增加。
哈希碰撞是指不同的输入字符串可以生成相同的哈希值,从而破解MD5密码。
破解MD5密码一般采用暴力破解和字典攻击两种方式。
4.实验结果通过编程计算MD5并破解一个MD5密码,结果如下:5.实验总结通过本次实验,我们了解了MD5算法的基本原理和计算过程。
MD5算法简介及编程实现

实验三MD5算法实验目的:1.了解哈希函数的概念和功能,以及一些典型的哈希函数2.进一步理解MD5算法的概念及结构,掌握MD5算法对数据的处理过程3.通过编程模拟MD5算法的处理步骤实验内容:一.MD5算法概述MD5算法是一种消息摘要算法(Message Digest Algorithm),此算法以任意长度的信息(message)作为输入进行计算,产生一个128-bit(16-byte)的指纹或报文摘要(fingerprint or message digest)。
两个不同的message产生相同message digest的几率相当小,从一个给定的message digest逆向产生原始message更是困难,因此MD5算法适合用在数字签名应用中。
MD5实现简单,在32位的机器上运行速度也相当快,当然实际应用也不仅仅局限于数字签名。
MD5算法的处理步骤:第一步:增加填充增加padding使得数据长度(bit为单位)模512为448。
如果数据长度正好是模512为448,增加512个填充bit,也就是说填充的个数为1-512。
第一个bit为1,其余全部为0。
(即第一个字节为0x80)第二步:补足长度将数据长度转换为64bit的数值,如果长度超过64bit所能表示的数据长度的范围,值保留最后64bit,增加到前面填充的数据后面,使得最后的数据为512bit的整数倍。
也就是32bit的16倍的整数倍。
在RFC1321中,32bit称为一个word。
第三步:初始化变量:用到4个变量,分别为A、B、C、D,均为32bit长。
初始化为:A: 0x01234567B: 0x89abcdefC: 0xfedcba98D: 0x76543210第四步:数据处理首先定义4个辅助函数:F(X,Y,Z) = XY v not(X) ZG(X,Y,Z) = XZ v Y not(Z)H(X,Y,Z) = X xor Y xor ZI(X,Y,Z) = Y xor (X v not(Z))其中:XY表示按位与,X v Y表示按位或,not(X)表示按位取反。
md5校验原理范文
md5校验原理范文MD5(Message Digest Algorithm 5)是一种常用的哈希函数,用于将任意长度的数据映射成固定长度(128位)的哈希值。
MD5是一种无状态、单向加密算法,它将任意长度的数据通过一个公共的算法,生成一个128位长的哈希值。
MD5校验原理主要包括以下几个方面:1.消息填充:MD5算法接收任意长度的消息作为输入,首先需要对消息进行填充以确保其长度是64的倍数。
填充分为两个步骤:第一步,在消息尾部增加一个比特1,后面跟随足够数量的0,直到长度满足对64求余得到56;第二步,在第一步结果尾部增加原始消息的长度,以64位表示。
2.初始化链变量:MD5算法使用四个32位整数作为链变量:A、B、C、D。
这四个变量初始化为特定的常数,用于存储哈希结果的中间值。
3.迭代计算:MD5算法将消息分为若干个512位的数据块(如果分完后数据长度不足512位,则按照填充规则进行填充)。
每个数据块由16个32位字组成。
a.初始化A、B、C、D:A'=AB'=BC'=CD'=Db.主循环:对每个数据块执行以下操作:-将数据块的16个字按顺序装填到缓冲区数组X[0...15]中。
-进行四轮操作,每轮操作使用不同的非线性函数:-第一轮:f(X[i],X[i+1],X[i+2])=(X[i]∧X[i+1])∨(¬X[i]∧X[i+2]) -第二轮:g(X[i],X[i+1],X[i+2])=(X[i]∧X[i+2])∨(X[i+1]∧¬X[i+2]) -第三轮:h(X[i],X[i+1],X[i+2])=X[i]⊕X[i+1]⊕X[i+2]-第四轮:i(X[i],X[i+1],X[i+2])=X[i+1]⊕(X[i]∨¬X[i+2]) -更新A、B、C、D的值:t=A+f(B,C,D)+X[k]+T[i]A=DD=CC=BB=B+((t<<s),(t>>(32-s)))-最终,加上A'、B'、C'、D'的值:A=A+A'B=B+B'C=C+C'D=D+D'c.得到最终结果:将A、B、C、D以32位的大端序方式连接起来,得到128位的哈希值。
MD5实验报告范文
MD5实验报告范文实验报告:MD5算法的原理、实验过程及结果分析1.实验目的MD5(Message-Digest Algorithm 5)是一种常用的哈希算法,主要用于对消息进行完整性校验和数字签名等应用。
本实验旨在探究MD5算法的原理及实现过程,并通过实验验证其正确性和有效性。
2.实验原理MD5算法主要包括以下步骤:(1)填充消息首先,将消息进行填充,使其长度能够被512位整除。
填充方式为在消息末尾添加一个'1',然后添加若干个'0',以确保消息末尾有64位的原始消息长度。
(2)初始化缓冲区(3)消息分组将填充后的消息按512位分组,每组包含16个32位的子分组。
(4)循环压缩函数对每个分组进行四轮循环操作,共64轮。
每一轮包含四个步骤:F 函数、G函数、H函数和I函数。
每个函数分别对A、B、C、D进行操作,并根据当前轮数选择不同的方式对数据进行置换和变换。
(5)累加结果每轮循环后,计算出的A、B、C、D将与缓冲区中的原始值进行累加。
(6)输出结果经过64轮循环后,得到的缓冲区即为MD5的输出结果。
3.实验过程(1)理论分析根据MD5算法的原理,我们可以分析MD5的输入为任意长度的消息,输出为固定长度(128位)的哈希值。
MD5算法具有较高的计算效率和较好的抗碰撞性能。
(2)实验步骤a.编写MD5算法的编程代码,包括填充消息、初始化缓冲区、消息分组、循环压缩函数等步骤。
b.准备不同长度的测试消息,包括短消息和长消息。
c.分别对不同长度的消息进行哈希计算,并记录计算时间。
d.比较计算结果与预设结果是否一致。
4.实验结果分析经过实验,我们得到了如下结果:(1)对于短消息(长度小于512位),MD5能够在较短时间内完成计算,且计算结果与预设结果一致。
(2)对于长消息(长度大于512位),MD5的计算时间随着消息长度的增加而增加,但计算结果始终保持一致和正确。
5.结论与总结MD5算法是一种常用的哈希算法,具有较高计算效率和较好的抗碰撞性能。
浅谈使用MD5算法加密数据
浅谈使用MD5算法加密数据MD5(Message Digest Algorithm 5)是一种广泛应用于数据加密和校验的算法。
它是由美国密码学家罗纳德·李维斯特(Ronald Rivest)在1992年设计的。
MD5算法主要用于产生唯一的消息摘要,以确保数据的完整性和安全性。
它的输出是一个128位的散列值,通常用32位的16进制表示。
MD5算法的工作原理如下:1.数据分块:将待加密的数据分成512位的块进行处理。
2.填充补位:如果数据的位数不是512位的整数倍,则进行填充补位。
3.初始化处理缓冲区:使用四个32位的寄存器(A、B、C、D)作为缓冲区。
4.消息分组处理:将数据进行分组处理,每一组包含16个32位的子分组。
5.循环运算:通过四轮循环运算对数据进行处理,每轮使用不同的非线性函数和左移操作。
6.输出散列值:将最后一次循环的结果经过一系列操作得到最终的散列值。
MD5算法加密的特点:1.快速性:由于MD5算法的设计简单,执行速度非常快。
2.不可逆性:MD5算法是一种单向加密算法,加密后的散列值无法通过逆向运算得到原始数据。
3.雪崩效应:即使原数据只有微小的变化,加密后的散列值会发生巨大的变化,这种特性使得MD5算法能够有效地检测数据完整性。
4. 安全性较低:由于技术的发展,MD5算法已经被证明不是一种安全的加密算法。
由于其较短的输出长度和易受碰撞攻击(collision attack)的特性,通过碰撞攻击可以找到两个不同的输入得到相同的散列值。
因此,不建议将MD5算法用于密码存储等需要高安全性的场景。
在实际使用MD5算法加密数据时,需要注意以下几点:1. 随机盐值:为了增加数据的安全性,可以在加密过程中引入随机盐值(salt),盐值是一个随机字符串,与原始数据一同进行加密。
盐值的引入能够增加散列值的熵,防止使用彩虹表等攻击手段进行破解。
2.长度固定:无论原始数据是多长,MD5算法的输出长度是固定的,因此,无论是一段短文本还是一段较长文章,最终得到的散列值长度都是一样的。
MD5加密算法范文
MD5加密算法范文MD5加密算法是一种常见的密码散列函数,用于产生数据的“数字指纹”。
它可以将任意长度的数据作为输入,生成固定长度(128位)的哈希值。
MD5算法由美国密码学家罗纳德·李维斯特(Ronald Rivest)设计于1991年,并由国际数据加密标准(IEFT)发布。
MD5算法的基本原理是将输入的数据分成若干个块,并对每个块进行特定的处理。
具体步骤如下:1.填充数据:将输入数据的长度调整为512位的整数倍,添加填充位以确保数据块的长度一致。
2.初始化状态:将每个处理值初始化为特定常数,用于存储每个数据块的中间结果。
3.处理数据块:对每个数据块依次进行以下四个步骤:-压缩函数:将处理值与数据块进行处理,生成新的处理值。
-合并处理值:将新的处理值与之前的处理值合并,得到最终的处理值。
4.输出结果:将最终的处理值转换成128位的哈希值。
MD5算法的优点是操作简单、执行效率高,适用于验证数据完整性、密码存储和数字签名等场景。
然而,由于MD5算法存在一些安全性问题,现在已经不推荐在安全性要求较高的场合使用。
首先,MD5算法是单向散列算法,无法通过哈希值逆推出原始数据。
这使得MD5算法在密码存储场景被广泛使用,但也使得MD5算法容易受到暴力破解的攻击。
由于MD5的哈希值长度仅为128位,因此通过穷举法可以快速获取相应的原始数据。
其次,MD5算法存在哈希碰撞的问题。
哈希碰撞是指两个不同的输入数据生成了相同的哈希值。
由于MD5算法的哈希值长度有限,通过特定的算法操作,可以找到两个不同的数据生成相同的哈希值,从而构造出恶意数据。
最经典的例子是2004年,两个密码学家展示了如何通过构造不同的SSL证书,生成相同的MD5哈希值,并成功冒充合法的SSL证书。
这个问题暴露了MD5算法无法提供完全的数据完整性和安全性。
为了解决上述问题,人们提出了一些更安全的散列算法,如SHA-1、SHA-2和SHA-3、这些算法在输入长度、哈希值长度和处理过程方面都有所改进,提高了数据的完整性和安全性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于 MD5 的登陆方案用 JavaScript 来实 现相对容易 , 一个 开放源码的完全实现可从 Paul Johnston 处得到。 我们 现 在 用 ASP 来 实 现 服 务 器 端 脚 本 ( 因 为 它 支 持 JScript, MicroSoft 版本的 JavaScript) 。你 当然可 以用其 他任何 服务器端脚本 , 只不过你得将 MD5 算法翻译 成那种语言。 4 MD5 算法的安全性考虑 ∀ 对强行攻击的安全 性 : 使 用强行 技术 , 产生 任何 一个报 文使其摘要等于给 定保 文摘 要的 难度 对 MD5 是 2128 数 量级 的操作 , 产生 相同 报 文 摘要 的 两个 报 文的 难 度 是 264 数 量级 的。 ∀ 对密码分析的安全性 : 对 单循环的 MD5, 使用不 同的密 码分析可能在合理 的时间 内找 出能 够产生 相同 摘要 的两 个报 文 , 这个结果被证明对四个循 环中的任意一循环也成立。 目前 , MD5 已被认为是易受 攻击的。事 实上 , MD5 算法已 有被德国解密专家 攻破的 纪录 , 据 称 , 一个 价值 几百 万美 元的 计算机系统可以 在几周 内寻 找出 已被 暗码 处理 的原 文。在对 安全要求很高的场合使用仍存在风险。
( 上接第 5 页 )
的提高 , 特别是在训练样本数量不 足的环 境下优 化效果 更为明 显。采用该优化算法的 自动 分类 系统 在小 样本 情况 下的 实际 应用能力得 到了显 著的 增强 , 并 在 3000 篇 样本 容量 的环 境下 达到了可实际应用的程度。 4 结束语 通过强化语义链因 子的 作用 来 KNN 分 类 , 证明 在封 闭测 试中结果很好 , 强化了特征关 联和共 现的作 用。基于隐 含语义 的 KNN 方法以一个较小而更健壮的统 计导出的 索引概 念空间 参考文献
[ 1] % Crytogrphy and Network Security: Principles and Computation 2ed( 密码学与网络安全 : 原理与实践 ) & Wi lliamStalli ngs 清华大学出版社 [ 2] % MD5 算法研究& 王可 网址 : http: / / www. yesky. com/
图1 图 1 描述了 - 单个 512- bit 分组 的 MD5 处理过 程。 MD5 压缩函数 每一轮包含对缓冲区 ABCD 的 16 步操作 所组成的 一个序 列。 a< - b+ ( ( a+ ( b, c, d) + X[ k] + T[ i] < < < s 其中 , a, b, c, d = 缓冲区的四个字 , 以一个给定的次序排列 ; g = 基本逻辑函数 F, G, H, I 之一 ; < < < s = 对 32 位字循环左移 s 位 ; X[ k] = M[ q* 16+ k] = 在 第 q 个 512 位数据 块中的 第 k 个 32 位字 ; T[ i] = 表 T 中的第 I 个 32 位字 ; + = 模 232 的加 ; 每次循环进行 16 步操作 , 其中 s 的值在四次循环中都有不 同的定义 , 并且在 每一 步的 值也 不同。 图 2 为基 本 MD5 操作 ( 单步 )
2005 年第 1 期
福
建
电
脑
15
MD5 算 法 体 会
陆 伟
( 上海ቤተ መጻሕፍቲ ባይዱ达学院 , 上海 201209) 摘 要 本文详细介绍了 MD5 算 法的原 理 , 并举 了一个 其他 应用实 例 ! ! ! MD5 算 法用于 INTERNET 口 令保 护 , 并对 MD5 算法的安全性 进行了分析 。 关键词 1 MD5 算法 报文摘要 MD 缓冲区 MD5 压缩函数 口令保护 每一轮以当前的 512 位数据块 ( Yq ) 和 128 位 缓冲值 ABCD 作为输入 , 并修改缓 冲值的 内容。每 次使用 64 元素表 T[ 1. . . 64] 中的四分之一。该 T 表由 sin 函数构造而成。 T 的第 i 个元 素表示为 T[ i] , 其值等于 232 ∃ abs( sin( i) ) 的整数部分 , 其中 i 是 弧度。由于 abs( sin( i) ) 是一 个 0 到 1 之间 的数 , T 的每 一个元 素是一个可以表示成 32 位的整数。 T 表提供了随机化 的 32 位 模板 , 消除了在输入数据中的 任何规律性的特征 T表 T[ 1] = D76AA478 T[ 49] = F4292244 T[ 2] = E8C7B756 T[ 50] = 432AFF97 T[ 3] = 242070DB T[ 51] = AB9423A7 T[ 4] = C1BDCEEE T[ 52] = FC93A039 .. . . .. T[ 16] = 49b40821 T[ 64] = EB86D391 ∀ 步骤 5: 输 出 结果。 所有 L 个 512 位 数 据 块处 理 完毕 后 , 最后的结果就是 128 位消息摘要。
16
福
建
电
脑
2005 年第 1 期
图2 3 MD5 算法用于 INTERNET 口令保护 MD5 用得最多的是作为 报文摘要算法 , 但它也可 以灵活运 用到其他方面。譬如 : 我 们现 在就 来利 用 MD5 算法 开发 一个 过程 , 如图 3 、 4、 5, 它 将能 够保 护 从浏 览器 传 送到 服务 器 的口 令。 用户试图登陆到一个 Web 应用程序时 , 服务器端 脚本提供 用户一个包含有从数十亿可能值中 产生的 随机数 的表格 , 当用 户在此登陆表格中 输入她 们的 ID 和口 令 , 客户 端的 脚本 将这 个随机数值添加到口令后并加以 MD5 单向运算。然后以 MD5 算法的输出作为口令 , 我将称这个口令为 MD5 口令。 客户端脚本然后将用户 ID 和 MD5 口 令传输 至服务器 , 因 为这个值是 MD5 算法的 输出 , 反 向推 算出 用户 原来 输入 的口 令是几乎不可能的。 当用户 ID 和 MD5 算 法得出 的口令 被 Web 应 用程序 接收 到后 , Web 程序执行与 用户浏 览器 相同 的操 作 , 它将 当初 传给 用户的随机数加到 用户口 令后 , ( 此口 令取 自服 务器 中被 保护 区域 ) 然后计算出正确的 MD5 口令 值 , 将 此数值 与从浏 览器收 到的值作一 比较 , 如相等 , 则 设置 一个 服务 器端 会话 变量 以确 定用户认证通过。 此时你 可能会疑惑为什么要使 用随机 数 , 随 机数是 用来防 止重新攻击 的 , 如果 仅用 户口 令经 过 MD5 运 算 , 此 MD5 口令 将始终保持 一个值 , 监听 的黑 客只 需简 单地 截获 这个 MD5 口 令就可用它来登陆进 Web 应 用程序。 这个随 机数 保证了 每次 新的登陆都有一个特定的 MD5 口令。 参考资料
[ 1] [ 2] [ 3] [ 4]
替代原来基于独立词索引的文档向 量空间 , 表 现出明显 的性能 优势。基于特征聚合 模式的 KNN 文本 分类 , 分 类算 法能 够解 决关联特征维的提取和向量空间维 数高的 问题 , 明显提 高了分 类的准确率和招回率。基于 KNN 和自 动检索 的优化分 类算法 ! ! ! 迭代近邻法 , 能使自动分类 系统的 整体查 全率和查 准率有 一定的提高 , 特别是在训练样本 数量不 足的环 境下优化 效果更 为明显。本文分析了 KNN 方 法实 质 , 比较 和分 析四 种改 进的 KNN 文本分类方法 , 了解改进 KNN 文本分类关键技术。
引言 MD5 算法是通过数学运算 , 把 不同长度 的信息 转化到 128 位编码中 , 形成 Hash 值 , 通过 比较 这个 数值 是否 正确 , 来 确定 通信双方的合 法性。 这也 可以 说是 数字 签名 , 在 数据 传输 后 , 可以通过比较 Hash 值来 判断 信息 途中 是否 被截 获修 改 , 是否 由合法的发送人发送或者合法的 接收人 接收等。 用这种方 法 , 可以防止密钥丢失的 问题 , 因 为它 的加 密部 分是 随机 生成 的 , 如果没有正 确的 Hash 值 根本 就无 法解 开加 密部 分 , 而且 它还 具备了数字签 名的 能 力 , 可以 证 明发 送 方和 接 收方 的 合 法身 份 , 具有不可抵赖性 , 很适 用于 商业信 息的 传递。 MD5 的 典型 应用是对一段信息 ( Message) 产生信 息摘要 ( Message- Digest) , 以防止被篡改。它还被广泛用于加密和解密技术上。 MD5 ( RFC 1321) 是于 90 年代由 Ron Rivest 在 MIT( 麻省 理工学院 ) 提出来的。我们现在来了解一下 MD5 的原理。 2 MD5 算法原理 该算法输 入任 意长 度的消 息 , 输出 128 位消 息摘 要 , 处理 以 512 位输 入数据块为单位。处理报文摘要的过程如下 : ∀ 步骤 1: 添加填充位 ( 最高 位为 1 和 其余为 0) 。在消息 的最后添加适当的填充位使得数据位的长 度满足与 448 模 512 同余 , 即 : length # 448 mod 512。 ∀ 步骤 2: 添加长度。原 始消息 长度 ( 二进制 位的 个数 ) , 用 64 位表示 , 并附加在步骤 1 的结果后。 由这两 个步骤 得到 长度 为 512 整 数倍 的 报文。 表示 为 L 个 512 位的 数据块 : Y0, Y1, . . . , YL- 1 。其长 度为 L ∃ 512bits。 令 N= L∃ 16, 则长度为 N 个 32 位的字。令 M[ 0. . . N- 1] 表示 以字为单位的消息表示。 ∀ 步骤 3: 初始化 MD 缓冲 区。一个 128 位 MD 缓 冲区用 以保存中间和最终散列函数的 结果。它可 以表示 为 4 个 32 位 的寄存器 ( A, B, C, D) 。 寄存器初始化为以下的 16 进制值。 A = 67452301 B = EFCDAB89 C = 98BADCFE D = 10325476 寄存器内容 Word A: 01 23 45 67 Word B: 89 AB CD EF Word C: FE DC BA 98 Word D: 76 54 32 10 采用小 数在前的格式存储 , 即 将字的 低字节 放在低 地址字 节上 ∀ 步 骤 4: 处理消息块 ( 512 位 = 16 个 32 位字 ) 。一个压缩 函数是本算法的核 心 ( HMD5) , 它包 括 4 轮处理。 四轮处 理具 有相似的结构 , 但每次使用不同的基 本逻辑函数 , 记为 F, G, H, I。