MD5简介:
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法。换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
MD5算法:
第一步:
增加填充
增加padding使得数据长度(bit为单位)模512为448。如果数据长度正好是模512为448,增加512个填充bit,也就是说填充的个数为1-512。第一个bit为1,其余全部为0。
第二步:
补足长度
将数据长度转换为64bit的数值,如果长度超过64bit所能表示的数据长度的范围,值保留最后64bit,增加到前面填充的数据后面,使得最后的数据为512bit的整数倍。也就是32bit的16倍的整数倍。在RFC1321中,32bit称为一个word。
第三步:
初始化变量:
用到4个变量,分别为A、B、C、D,均为32bit长。初始化为:
A: 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10
第四步:
数据处理:
首先定义4个辅助函数:
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
其中:XY表示按位与,X v Y表示按位或,not(X)表示按位取反。xor表示按位异或。
函数中的X、Y、Z均为32bit。定义一个需要用到的数组:T(i),i取值1-64,T(i)等于abs(sin(i))的4294967296倍的整数部分,i为弧度。
假设前三步处理后的数据长度为32*16*Nbit
第五步:
输出:
最后得到的ABCD为输出结果,共128bit。A为低位,D为高位。
MD5在ASP.net(C#)中的实现:
//欲进行md5加密的字符串
string test = "123abc";
//获取加密服务
System.Security.Cryptography.MD5CryptoServiceProvider md5CSP = new System.Security.Cryptography.MD5CryptoServiceProvider();
//获取要加密的字段,并转化为Byte[]数组
byte[] testEncrypt = System.Text.Encoding.Unicode.GetBytes(test);
//加密Byte[]数组
byte[] resultEncrypt = md5CSP.ComputeHash(testEncrypt);
//将加密后的数组转化为字段(普通加密)
string testResult = System.Text.Encoding.Unicode.GetString(resultEncrypt);
//作为密码方式加密
string Encrypt PWD = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(test, "MD5");
只需最后一段语句即可进行MD5加密,无需引入任何包.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chessplayer/archive/2007/08/02/1722826.aspx
分享到:
相关推荐
java与c#MD5加密方法得到不一致解决办法,MD5加密后得到不一致结果
C#编写的md5加密解密,含调用例子.有需要的朋友请下载使用
C++编写AES,MD5的动态链接库,导出AES.dll ,用于unity或者C#网络编程中,对网络消息进行加解密
C#用MD5加密操作实战源码201903
C# MD5 不可逆的加密方式 内容为代码
MD5算法之C#程序 MD5算法描述
md5算法C#的实现
解决.net 调用php 接口时生成签名用到 md5加密,net与PHP生成密文不一致问题
C# MD5动态链接库,实现了MD5的C#加密,可以通过类调用MD5加密方法
详情见内部说明文档。 1.CPP和C#分别调用DLL,获取DLL所在绝对路径 2.CPP宽字符和普通字符(字符串)互转 3.C#调Python脚本 4.CPP使用Ice::Util中的timer 5.CPP使用OpenSSL进行AES算法的ECB加解密 6.C#计算SHA和MD5值
用C#.net,很简单,.net中已经集成了MD5算法,只要调用出来就可以了,贴出来,给比我还入门级的朋友参考下。
最近研究加密技术,其中一些有名的加密算法还是不错的,这里是MD5加密,C#实现,因为C#本身已经有了加密库,直接调用就可以了,代码如下,实现了ANSI字符串加密与Unicode字符串加密。
C#版MD5算法实现.类库调用和算法过程。
MD516位与32位不可逆加密,调用示例如下: <--#include file="md5.asp"--> Pass1 = MD5(Password,16) '16位加密 Pass2 = MD5(Password,32) '32位加密 %>
在PHP中,要对一个字符串进行MD5加密非常简单,一行代码即可: 代码如下: md5(“Something you want to encrypt.”) 直接调用md5()方法,然后将要进行MD5加密的字符串传进去,就可以得到返回的hash code。在C#中应该...
方法二: 其实在ASP.Net编程中,不用调用md5.asp来加密数据。在DotNet中有自带的类:...
在WebService使用Md5和SHA1加密技术对用户密码进行加密处理,从而增加用户安全性。登陆判断同样通过Md5和SHA1加密密码然后和数据库经过加密密码进行比较来(它们可都是二进制滴哦!)验证用户是否存在 很好滴东西 ...
C#获取MD5值的动态库,直接调用静态方法即可,已与专业软件产生的值进行对比,结果正确。
计算文件的MD5值,包含MD5的算法,已打包成dll。包含.h文件后就可以直接调用函数。适合初学者使用。