请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
MD5算法简单的来说就是把任意长度的字串变换成固定长度(通常是128位)的16进制串。RFC 1321定义了MD5算法。4 ]0 O8 J. z7 U2 n
MD5的用途主要有:
^$ V. r6 i2 c/ d; q+ |) y一致性验证。比如我们从网上下载了某个文件,网站上一般会给出该文件的MD5值,我们下载下来后,可以利用工具计算出
. _- ?2 {& X b p7 E新的MD5值,与正确的MD5值进行对照,如果不一样,则可以断定该文件下载出错或被篡改了。
. |# W! y& h) O数字签名。可以用MD5算法对发布的程序或发布的消息生成MD5值作为签名等。9 `% }- o- M" `& K" S
密码存储。在传输过程中或存储过程中,直接用明文的密码都是很危险的。可以在传输之前先用MD5加密,存储也不用存储% E! J& r4 z0 A: t
明文,可以直接存储MD5值。在验证时,先把输入的密码转换成MD5值再与存储值进行对比。 对于密码存储,Asp.net的实现方法为:
8 D; q8 y/ `# @' M' O- o3 e' E1 B) C[mw_shl_code=csharp,true]protected void Page_Load(object sender, EventArgs e)3 P( S) z" g' g' B, }
{
( A* X6 k: }; j string plainPassword = "innovator";+ x0 v: `2 m* w+ J( j
, X2 U$ C: |6 g1 w8 D
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
* F' _! m5 M; T3 Z9 Z0 _0 Q! D System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
9 w5 B1 Q9 {) L7 d4 M% B byte[] data = ascii.GetBytes(plainPassword);5 _, u! a: t' p) l1 s% M& D
byte[] result = md5.ComputeHash(data);
4 s1 d- \2 w0 ?3 S& G* R // Convert the MD5 result to Hexadecimal string- N# v. D) d' \+ T1 X
' f y; O9 ~" P0 F
string MD5Password = BinaryToHex(result);4 {: ]/ u+ X. p( C. M) e* C
string aa = "";7 J6 \- Z4 N6 W% i2 ?$ ^# w' ^
}[/mw_shl_code]
: T6 ^# J3 ^( N/ k! ?& ^[mw_shl_code=csharp,true]private String BinaryToHex(byte[] BinaryArray)
# E7 u. R1 k. V) F7 r2 @ {9 R# [5 i3 m) F7 N' [3 b I9 f
string result = "";6 N+ c* S/ N& b0 s! C; E
long lowerByte;) k% q! K1 _7 ^' d% O4 W) @
long upperByte;8 X7 B$ O5 c' m0 g( A1 p* P
, t/ j+ _* q* k" h9 Y; Y1 A" w foreach (Byte singleByte in BinaryArray)8 q% l( W2 ^# a; G# E4 \& o
{ e! _/ C+ b: g" |0 S' G8 n& u
lowerByte = singleByte & 15;1 `: \( A1 A& q: \- Z' m. D
upperByte = singleByte >> 4;; N/ }! r7 J. ^8 R5 R- ?
; j, g4 |" J5 |( U3 | result += NumberToHex(upperByte);
; j% {2 ^, U6 E6 n result += NumberToHex(lowerByte);& h! }( p }+ u6 c3 P8 Z9 B
}
7 g, [7 i5 c; o; p( S- c0 j s return result;- \; A1 X2 i# |+ I" ^
}[/mw_shl_code] + f8 r0 I: a6 F! e& i3 F# B) b$ a* q B% D
[mw_shl_code=csharp,true]private static char NumberToHex(long Number)! `+ V7 L( a+ J0 }- ~1 t
{
/ H+ X: e1 a& H! |4 P0 s2 v# [1 } if (Number > 9)% T, e9 C$ K, S8 ~' ]0 g+ g2 M( l8 M
return Convert.ToChar(65 + (Number - 10));4 e5 H7 e+ z y% ?5 [5 f2 S. C
else
) L$ \3 U4 H5 E1 ~* }4 ^7 L K! } return Convert.ToChar(48 + Number);
* i0 `0 x$ T' ?' c }[/mw_shl_code] , W) T3 F! Q2 Y. s3 N
|