|
MD5加密算法在我们做网站开发的时候用过的很多,首先用户的密码我们每次都是要加密存进数据库。 其实在C#中实现对数据(字符串)的MD5加密是非常简单的。+ ~' e- G' t8 |( a3 j% z* t
引用using System.Security.Cryptography;
; [( Y1 M( v4 W6 J0 i+ G: P% ?" Tpublic string Md5(string str)$ T* l* R% t5 }- F) ~, Q" o
{
# H- @ P. `& EMD5 md5 = new MD5CryptoServiceProvider();
. a" k; o _. pbyte[] data = md5.ComputeHash(UnicodeEncoding.Default.GetBytes(str));
& V7 L6 j0 v5 F6 I4 jStringBuilder strBuilder = new StringBuilder(); [) O, a; ]: D# B
for (int i = 0; i < data.Length; i++)
3 T/ K' T4 D+ `5 }+ q; d{
/ D3 K/ A6 M; g7 b" A8 i; ~strBuilder.Append(data.ToString("x2"));
8 A6 X" c0 Q0 @) _, M}& u# j$ c4 {( X- z
return strBuilder.ToString();
6 P, F! W# W1 Q* M: O2 `}
9 s+ G* G8 B( n6 b# j这样返回的是32位的字符串。
7 p! z# P; C4 B4 ~6 c) I w但是我们在查看别人的数据库数据的时候有是会发现PASSWORD是16位的。0 R+ ~: a6 N$ a2 C
这是这样计算的:
4 s& r2 [6 V% w2 I8 bmd5计算(admin)=2123 2f29 7a57 a5a7 4389 4a0e 4a80 1fc3;
2 Q i1 {# w- A0 `! F r16=7a57 a5a7 4389 4a0e;其实是在32位的加密的基础上取了它的重第9位到24位。即substring(8,16)。
. i8 V& L$ O/ B; y. i其实还有一个就是我在查看别人数据库的时候发现有40位的(主要是各大破解MD5的网站太多了,MD5加密已经没有那么安全了,所以有些人又变换出来了40位的。其实一看40位的也很简单,变换的不复杂。):
' g" v: Z5 r' B+ u0 ~ Q5 h6 Y我们一起开看看它是怎么运算的:
( j" i8 V6 V3 S7 S. A# J4 N40位的:7a57 a5a7 4389 4a0e 4a80 1fc3 4389 4a0e 4a80 1fc3
& W$ X2 p: Z4 U) F前面16位:即是MD516位的加密7a57 a5a7 4389 4a0e。
! l* F1 J9 k/ J剩下的24位:4a80 1fc3 4389 4a0e 4a80 1fc3
8 ]+ p' {0 e6 h" ?. h% ^4 ~不难发现:4a80 1fc3=MD532位加密的后8位+ 4389 4a0e=MD516位加密的后8位+4a80 1fc3=MD532位加密的后8位。6 g2 u& ?) _ X
所以这核心就是保存了前面16位。有了这16位就可以保证数据的正确性,至于后面的都是迷惑大家用的。其实也可以进行其他各种的变换。如我对它(admin)进行16加密只后把它首位分开放置.然后中间在按照自己的算法放置字符串。产生一个40位的密码。0 J$ V, B- y2 _
为什么会这样说呢?6 s. X7 L8 H8 ~
其实现在的SQL注入还是很严重的。万一我们的网站做的出现了注入漏洞的话,被某些HACKER(脚本小孩),拿到了帐号密码之后,一看是40位的。它就开始蒙了。心想这是什么加密,(其实加密的算法有很多哦。)百度之后呵呵抱歉这是你自己想的一个。这样就可以避免了一些威胁。不是吗?& D% U- G9 a) k! V& \5 ]
还有就是自己的密码长度格式:在13位左右-有数字,字母,大小写,以及@字符; E6 U" A! }5 t) F& l
例如:AiaoqQ@91b91b1 ?% s# O; V5 r' l+ ]
这是我的一个密码的规范:在@之前的密码用字母表示第一个和最后一个都大写
K3 ^, p. U l@之后都用数字但是出现了8我就替换成b.
3 w0 Z( \4 _ j) u也很好记住:xiaoqq我的昵称,918我的生日重复一次。遇到8=b.) b: b: X3 X5 G9 |9 a
呵呵希望这篇文章对某些人有帮助。% g2 B r; Z" O" f
|