MD5算法原理
阅读数:250 评论数:0
跳转到新版页面分类
算法/数据结构
正文
MD5,即“Message-Digest Algorithm 5”(信息-摘要算法),从名字来看就知道它是从MD3、MD4发展而来的一种加密算法,其主要通过采集文件的信息摘要,从此进行计算并加密。
MD5是输入不定长度信息,输出固定长度128-bits的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128-bits散列。基本方式为:求余、取余、调整长度、与链接变量进行循环运算。
1、填充编码
在MD5算法中,首先需要对信息进行填充,使其位长对512求余结果等于448。因此,信息的位长将被扩展至N*512+448,N为一个非负整数,N可以是零。填充的方法如下,在信息的事面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息的位长=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。
2、装入标准的幻数(四个整数)
标准的幻数(物理顺序)是A=(01234567)16,B=(89ABCDEF)16,C=(FEDCBA98)16,D=(76543210)16.
3、处理分组数据
一次子循环的过程如上图,F是一个非线性函数,Mi表示一个32-bits的输入数据,Ki表示一个32-bits常数。
MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组(Mi)。
所以一个MD5运算由N+1大循环组成(512位),每一个大循环分成16子循环(32)。
相关推荐
一、介绍
1、二分图
其最大的特点在于,可以将图里的顶点分为两个集合,且集合内的点没有直接关联。
2、增广路径
增广路径是指,由一个未匹配的顶点开始,经过若干个匹配顶点,最后到达对面集合的一个未匹配
deflate是同时使用lz77算法与huffman编码的一个无损压缩算法。人们普遍认为deflate不受任何专利所制约,deflate压缩与解压缩的源代码可以在开源的zlib库中找到。
一、密码学的常见概念
1、代替密码
代替密码是指先建立一个替换表,加密时通过查表,将明文的每个字母依次替换为对应的字符,生成密文。
按替换表的个数又细分为:
(1)单表代替密码
即一个明文字符对应一个
零-概述
ECB模式和CBC模式是最常用的两种模式。
1、需要块对齐的模式:ECB、CBC、PCBC
2、需要初始向量的模式:除了ECB模式外,都需要初始向量。
一、ECB,电子密码本
Electro
一、概述
1、图的表示法
图G = (V, E)的表示有邻接表和邻接矩阵两种形式。通常,对于| E |远小于| V | ^ 2的稀疏图,用邻接表比较合适。若图稠密或很小,或必须很快判别给定的两个顶点是