APP下载

MD5加密算法的改进及应用

2012-10-16郑晓松褚丽莉张天乐

数字技术与应用 2012年8期

郑晓松 褚丽莉 张天乐

摘要:本文介绍了MD5加密算法的基本原理,并且在此基础对该算法进行了改进。最后将MD5加密算法应用于数据库存储密码等重要信息的加密处理。

关键词:MD5C#随机数 按位与运算

中图分类号:TP309.7 文献标识码:A 文章编号:1007-9416(2012)08-0099-01

1、概述

MD5是Message-Diggest Algorithm 5(信息-摘要算法)的英文缩写,该算法的输入文本处理是通过将MD5分为512位分组,且16个32位的子分组组成了每个分组。4个32位的数分组组成了该算法的输出部分,然后把这4组32位的数级联成为1个128位的hash散列值。

第一步,用一个小于512位的倍数64位的数来补充消息长度。把1加在改消息的后面,其后面在加上所需个数的0,再把补充位数前的长度为64位的消息加到其后面。上面的步骤可以使得512位的整数倍正好是该消息的长度,而且又可以满足不同消息补位后的结果是不同的。

四个32位变量初始化为:

A=0M01234567

B=0M89abcdef

C=0Mfedcba98

D=0M76543210

第二步,在算法主循环运行时,消息的512位分组个数作为主循环循环次数。将上面四个变量复制到另外的变量中:A到a,B到b,C到c,D到d。第一轮进行16次操作。每次操作对a,b,c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a,b,c或d中之一。最后用该结果取代a,b,c或d中之一。

以一下是每次操作中用到的四个非线性函数(每轮一个)。

F(M,N,P)=( M &N;)|((~ M)&P;)

G(M,N,P)=(M&P;)|(N&(~P))

H(M,N,P)=M^N^P

I(M,N,P)=N^(M|(~P))

(&是与,|是或,~是非,^是异或)

函数F是按逐位方式操作:如果M,那么N,否则P。函数H是逐位奇偶操作符。设Mj表示消息的第j个子分组(从……

登录APP查看全文