请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
MD5算法简单的来说就是把任意长度的字串变换成固定长度(通常是128位)的16进制串。RFC 1321定义了MD5算法。" H) E8 }, s6 p0 P, n& [
MD5的用途主要有:% m: Y: X- p# }9 \
一致性验证。比如我们从网上下载了某个文件,网站上一般会给出该文件的MD5值,我们下载下来后,可以利用工具计算出& N l+ Z; z" x) H; a
新的MD5值,与正确的MD5值进行对照,如果不一样,则可以断定该文件下载出错或被篡改了。4 F! y! R n8 V3 y5 t8 E8 u
数字签名。可以用MD5算法对发布的程序或发布的消息生成MD5值作为签名等。; y R- w: z5 g3 p+ B: u
密码存储。在传输过程中或存储过程中,直接用明文的密码都是很危险的。可以在传输之前先用MD5加密,存储也不用存储, l1 Y- ?! S! Q$ g2 G
明文,可以直接存储MD5值。在验证时,先把输入的密码转换成MD5值再与存储值进行对比。 对于密码存储,Asp.net的实现方法为:
! a1 K9 G m2 P. b; |: s: K' W[mw_shl_code=csharp,true]protected void Page_Load(object sender, EventArgs e)
]5 z" ~$ L0 ^7 L! w g/ ~ {4 j6 F" d) p2 }: C6 f+ J
string plainPassword = "innovator";
- |) j; v* }- u" \8 C( n6 m# U/ B; N) L& p! d% X5 l7 ~8 `
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
/ D; K. w7 ~+ n System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
/ G7 p) X: r7 { byte[] data = ascii.GetBytes(plainPassword);
/ { ^; N8 Q8 P7 t- `& \ byte[] result = md5.ComputeHash(data);0 \& }9 I) v: n9 t- `
// Convert the MD5 result to Hexadecimal string6 z7 z6 `" M2 n2 `7 [ L/ o
: C& }1 P1 D! f3 O) |
string MD5Password = BinaryToHex(result);* z: L [8 o5 n# p9 E7 m
string aa = "";
9 G* y! C2 a' q( @2 T }[/mw_shl_code] + D, s& R7 ^/ {6 B* `
[mw_shl_code=csharp,true]private String BinaryToHex(byte[] BinaryArray)+ m/ A/ s8 c( Z
{7 K! D& D2 C0 |$ h+ }
string result = "";
! y9 U+ c1 ~6 [! a& Q* ` long lowerByte;3 F/ }: g' _1 v8 |) O
long upperByte;8 s5 m- k' p7 ?( O
0 z( T! M' g+ r( Z% D foreach (Byte singleByte in BinaryArray)
8 o! ^; f$ G8 l. L8 v3 R& U {
* g5 t- g+ d5 x' E lowerByte = singleByte & 15;
, g& m2 {- W% F0 [5 |1 h, I; e upperByte = singleByte >> 4;) X3 n: q6 B- l& R( v2 ?% }
) {2 x, L/ J8 n result += NumberToHex(upperByte);* t; U/ |& E7 |6 y$ Q+ r: Y7 S
result += NumberToHex(lowerByte);7 o6 t) Y4 e& A# Y9 k4 M
}* P# t8 C' Y8 Y8 s% |# Q
return result;) e) G% T, q" H
}[/mw_shl_code]
: M2 r" T" A# v& P9 b[mw_shl_code=csharp,true]private static char NumberToHex(long Number)7 D+ r# l J6 M2 {* d/ X E9 U
{
' z$ z& d+ o4 m" }1 ^1 U9 c if (Number > 9)
" `/ a/ i" W( A return Convert.ToChar(65 + (Number - 10));5 k# }% c; C8 e5 n$ f
else# j" e9 m3 `' }
return Convert.ToChar(48 + Number);
! ?7 g& }; q9 t8 \6 N: M Y }[/mw_shl_code]
* H7 t1 s; ]# L& x) ^& ]1 t |