请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
MD5算法简单的来说就是把任意长度的字串变换成固定长度(通常是128位)的16进制串。RFC 1321定义了MD5算法。, R9 O! v% W$ a' p4 t- u7 [
MD5的用途主要有:( h5 ]6 v# I" A1 N0 }* l
一致性验证。比如我们从网上下载了某个文件,网站上一般会给出该文件的MD5值,我们下载下来后,可以利用工具计算出
8 J b$ o# ^ F: L+ Q$ U新的MD5值,与正确的MD5值进行对照,如果不一样,则可以断定该文件下载出错或被篡改了。
3 D* W- R; }( ~; r1 r" j数字签名。可以用MD5算法对发布的程序或发布的消息生成MD5值作为签名等。
: w; j% {3 ]; S密码存储。在传输过程中或存储过程中,直接用明文的密码都是很危险的。可以在传输之前先用MD5加密,存储也不用存储
; G1 b. z J/ M- L ?明文,可以直接存储MD5值。在验证时,先把输入的密码转换成MD5值再与存储值进行对比。 对于密码存储,Asp.net的实现方法为:
9 g$ l6 T; a! y! t[mw_shl_code=csharp,true]protected void Page_Load(object sender, EventArgs e)
3 G& Y' Y4 Z! h {7 m- E9 e5 T! d m! l$ s
string plainPassword = "innovator";+ U" G( { i# }
- `' A0 v* R+ c2 {* P: a$ q System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();8 [8 D h1 _- {" U7 F& Q
System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
7 y# p5 A& _" s+ O3 A3 d byte[] data = ascii.GetBytes(plainPassword);2 Y: i; F0 o5 r) X! |, ]: k( w
byte[] result = md5.ComputeHash(data);
$ h% V* j7 H5 Y6 S- t# G% A5 K. T // Convert the MD5 result to Hexadecimal string) l r" p" n# k0 x1 Z1 U2 h9 c$ H
$ ~" N. e" g/ C. j$ { string MD5Password = BinaryToHex(result); e# s+ M2 n' I2 {3 t
string aa = ""; r" I: M% @3 \9 X, r
}[/mw_shl_code]
1 T3 _$ u( ?4 b H% o8 {: h' Z& Z[mw_shl_code=csharp,true]private String BinaryToHex(byte[] BinaryArray)
" Y6 _, V; n* o! P {
+ W9 b- H/ O# p6 K+ ~- H. v string result = "";
3 C; D6 E: P4 p* m long lowerByte;
- z6 @: S9 y# S& T$ L4 @ long upperByte;
' ~, ^6 b, N2 G! v1 T! j/ M" s! t4 B$ A
; L3 @/ J z0 O, k( O foreach (Byte singleByte in BinaryArray)
9 ^4 j& D: _2 [ {. \; L4 b" M3 s, ~2 n
lowerByte = singleByte & 15;
3 }5 ^) E! v) W8 R6 @ upperByte = singleByte >> 4;
3 q/ K% A2 F7 W8 s, P/ T& G- i
# X% K! }. I! u& n& N: } result += NumberToHex(upperByte);
6 w2 d. f3 n3 l' @5 E result += NumberToHex(lowerByte);
* M: Q% X7 |0 ~4 Y( U1 o+ z }! i- G% u9 V: C& P6 G
return result;( c a/ C1 R# @# i: S2 V# ~( n
}[/mw_shl_code]
1 v7 L/ h* C7 e; p[mw_shl_code=csharp,true]private static char NumberToHex(long Number)
% Q$ r/ u: l$ K; O+ o+ a/ @ {% l$ A# T" ~# Q
if (Number > 9)0 J6 Q* N8 F' C% Q( N
return Convert.ToChar(65 + (Number - 10));3 F0 D3 z }4 f& C& q
else7 I" p) T, ?- H: Z) c, J( d
return Convert.ToChar(48 + Number);
- `+ e# k8 v8 U }[/mw_shl_code]
g9 U/ ^* ~5 R' w |