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、增广路径 增广路径是指,由一个未匹配的顶点开始,经过若干个匹配顶点,最后到达对面集合的一个未匹配

0、这里假设有人要从A点去往B点。 1、找到与起始点相邻的所有可到达方块,<span style="col

概念 Base54算法使用了单表置换算法的思想,Base64使用一个由64个字符组成的映射表。 实现原理 1、将给定的字符串转换成对应的字符编码

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的稀疏图,用邻接表比较合适。若图稠密或很小,或必须很快判别给定的两个顶点是

用伪代码来表示, 二分查找算法大致是这个样子的: left = 0, right = n -1 while (lef

单模式VS多模式 (1)单模式 单模就是给你一个单词,然后给你一个字符串,问你这个单词是否在这个字符串中出现过(匹配) (2)多模式 给你

字符串的匹配包括蛮力匹配算法,KMP算法,BM算法,Horspool算法,Sunday算法,fastsearch算法,KR算法等等。<