C#中简单调用MD5方法以及MD5简介
作者:网络转载 发布时间:[ 2016/6/24 11:10:29 ] 推荐标签:测试开发技术 C#
MD5简介:
MD5的全称是Message-DigestAlgorithm5,在90年代初由MIT的计算机科学实验室和RSADataSecurityInc发明,经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:01234567
B:89abcdef
C:fedcba98
D:76543210
第四步:数据处理:
首先定义4个辅助函数:
F(X,Y,Z)=XYvnot(X)Z
G(X,Y,Z)=XZvYnot(Z)
H(X,Y,Z)=XxorYxorZ
I(X,Y,Z)=Yxor(Xvnot(Z))
其中:XY表示按位与,XvY表示按位或,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加密的字符串
stringtest="123abc";
//获取加密服务
System.Security.Cryptography.MD5CryptoServiceProvidermd5CSP=newSystem.Security.Cryptography.MD5CryptoServiceProvider();
//获取要加密的字段,并转化为Byte[]数组
byte[]testEncrypt=System.Text.Encoding.Unicode.GetBytes(test);
//加密Byte[]数组
byte[]resultEncrypt=md5CSP.ComputeHash(testEncrypt);
//将加密后的数组转化为字段(普通加密)
stringtestResult=System.Text.Encoding.Unicode.GetString(resultEncrypt);
//作为密码方式加密
stringEncryptPWD=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(test,"MD5");
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11