请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
MD5算法简单的来说就是把任意长度的字串变换成固定长度(通常是128位)的16进制串。RFC 1321定义了MD5算法。
# P" \" [6 X5 u& @% I3 z9 r; n# ?MD5的用途主要有:
d' @! y! Y4 `$ L2 J2 R% d一致性验证。比如我们从网上下载了某个文件,网站上一般会给出该文件的MD5值,我们下载下来后,可以利用工具计算出
. e- B4 Y7 S5 P9 e0 z新的MD5值,与正确的MD5值进行对照,如果不一样,则可以断定该文件下载出错或被篡改了。
9 r, G/ Q' I& E% l: Q; f1 r数字签名。可以用MD5算法对发布的程序或发布的消息生成MD5值作为签名等。
- ~1 J* ]* i4 n; F3 [. h密码存储。在传输过程中或存储过程中,直接用明文的密码都是很危险的。可以在传输之前先用MD5加密,存储也不用存储
# X8 M( z, X, K" n# Z' D. [明文,可以直接存储MD5值。在验证时,先把输入的密码转换成MD5值再与存储值进行对比。 对于密码存储,Asp.net的实现方法为:
$ l R9 `, q z- g6 d+ Y! m[mw_shl_code=csharp,true]protected void Page_Load(object sender, EventArgs e)1 w( _* _, ~) n# Y9 Z" r
{* e3 K7 s0 X; Z- K
string plainPassword = "innovator";
3 k0 _% R9 C- b- F+ Y! F+ p) j8 }& P& y9 e
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
5 E7 W& L6 W( `3 h% Z: x System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();. B3 @4 E! q! j2 h
byte[] data = ascii.GetBytes(plainPassword);% J1 ?$ P" \4 e5 f) j% a2 g
byte[] result = md5.ComputeHash(data);, s" ~' ?+ }2 p9 f
// Convert the MD5 result to Hexadecimal string& L5 N( f. m8 O5 g; e6 E3 M
" g9 ?1 u3 d# W7 B9 j& t$ ` string MD5Password = BinaryToHex(result);, [( ?. b1 F4 M) o% ? x7 a8 |
string aa = "";
7 n5 g3 ]% n& y* t9 K( v }[/mw_shl_code] 3 u& ~8 ]# C+ e
[mw_shl_code=csharp,true]private String BinaryToHex(byte[] BinaryArray)
9 D: b" j, z1 a' z' o5 G% B: v- C6 j {
, J: p j, [4 g% H9 M. Q string result = "";% x- f( C# X. v0 K3 F" u
long lowerByte;
1 x' u/ R& O" c* A% q long upperByte;
8 j: E" F }! a/ S
/ F/ H% P: ]6 P" ] foreach (Byte singleByte in BinaryArray)* B3 x) K' ^( w: m3 _' g
{
; ~ }6 c, `# c8 j H n lowerByte = singleByte & 15;. }/ o m4 k+ C
upperByte = singleByte >> 4;
; k) a/ R& i9 }
' n' m' }2 _3 B# x0 l% J+ Q result += NumberToHex(upperByte);- K& I3 F" L9 j+ U4 v5 c2 U
result += NumberToHex(lowerByte);
; X% M6 [/ \8 q! d }- P; F% P$ H5 Y0 Y! O7 [
return result;
( A9 S& Y* m5 ~9 E9 Z' K+ k }[/mw_shl_code]
' E" c% L$ ^# A* G7 Y2 w[mw_shl_code=csharp,true]private static char NumberToHex(long Number)7 q5 x9 T) w# v i' g
{! x% d8 M; `, L6 v& x8 n
if (Number > 9)1 U- P$ H. D# d! ]& ]( y
return Convert.ToChar(65 + (Number - 10));# i* R \ L$ c! A# h
else. X" w8 _0 @' Q! S; L
return Convert.ToChar(48 + Number);
3 h# h6 W1 K7 S5 E }[/mw_shl_code]
0 T/ X2 d. [; o$ f; W |