请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
MD5算法简单的来说就是把任意长度的字串变换成固定长度(通常是128位)的16进制串。RFC 1321定义了MD5算法。
0 a" S5 [ S* ?( P* ?" k- |* O8 VMD5的用途主要有:: P4 @5 t0 ^) a
一致性验证。比如我们从网上下载了某个文件,网站上一般会给出该文件的MD5值,我们下载下来后,可以利用工具计算出
5 C8 N, l: Y1 ` u0 M# g新的MD5值,与正确的MD5值进行对照,如果不一样,则可以断定该文件下载出错或被篡改了。
/ q: f0 P8 s$ n+ z数字签名。可以用MD5算法对发布的程序或发布的消息生成MD5值作为签名等。
% f) |1 L3 d8 q+ t6 J; @% ?密码存储。在传输过程中或存储过程中,直接用明文的密码都是很危险的。可以在传输之前先用MD5加密,存储也不用存储4 K- w @ d z3 q$ m$ S
明文,可以直接存储MD5值。在验证时,先把输入的密码转换成MD5值再与存储值进行对比。 对于密码存储,Asp.net的实现方法为:
, v8 [! q8 y# }: ~1 @, k' d) m4 w[mw_shl_code=csharp,true]protected void Page_Load(object sender, EventArgs e)
: j1 E4 }4 t4 U, l; |7 p& z {
1 l- ?2 ^1 g- b5 U* A string plainPassword = "innovator";( s3 R/ i2 `' V& ?1 r# H" K) z& F4 R% E
c4 A+ t f7 j
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();2 F, b7 F2 N8 a5 v
System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
7 l7 _ R+ Q \$ ] V- a byte[] data = ascii.GetBytes(plainPassword);# B5 J9 F2 V( N$ D
byte[] result = md5.ComputeHash(data);' V# R1 ?8 Y3 I; P/ p
// Convert the MD5 result to Hexadecimal string# z; N$ K" z |& Y' C2 u1 S; N) s
; c5 t, K1 _+ _" I& m string MD5Password = BinaryToHex(result);6 X- a& X4 G' c- x; s- M6 ]+ P% m
string aa = "";& R; [' C; l' ^) ? G! w
}[/mw_shl_code] " R9 n$ K% f) E
[mw_shl_code=csharp,true]private String BinaryToHex(byte[] BinaryArray)
& E+ {: `) h* N& _ {
& j) k a- y' w string result = "";* m% e( K$ l: Z% X( w; a6 G) n6 ]
long lowerByte;3 C% `7 ~* T3 }9 _) {$ Y# L
long upperByte;
! E1 N; \9 w+ s4 L1 L% a W, c" |4 ]
. C0 J& r- z, g6 Q8 K. y foreach (Byte singleByte in BinaryArray)
" u. T+ @5 ?7 U( q {
& {2 u% d" b! M- a' T% L3 d lowerByte = singleByte & 15;
9 W& j: M- C: B3 A: A* H upperByte = singleByte >> 4;2 R; A* f9 k3 J3 C
% \7 D, ~& y0 B! @% `/ I
result += NumberToHex(upperByte);
6 F1 q5 D, S( m) l result += NumberToHex(lowerByte);5 |: v x- S- q, e+ t% ^
}* m0 r% n% n- Y' N# k$ v: V
return result;3 m4 R8 M- Q0 l8 `
}[/mw_shl_code]
3 U# r. p$ p9 t7 q+ h7 N[mw_shl_code=csharp,true]private static char NumberToHex(long Number)
% I+ Q% M- l" `* E5 U" Z {+ r4 w6 J6 G' \% k/ P
if (Number > 9)
, u/ P! U: n) k7 E- I4 W( R% B2 k return Convert.ToChar(65 + (Number - 10));0 D6 n8 x/ g+ `) S: D
else
3 W: E, q/ l8 ?, @5 | return Convert.ToChar(48 + Number);
2 N9 G3 r" t- M/ W1 ? }[/mw_shl_code] + }) A9 g* k& ?; T$ P3 Z) b' p C
|