网站地图    收藏   

主页 > 后端 > 网站安全 >

浅谈网站安全之MD5加密 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 13:02 作者: 阅读:

[导读] MD5加密算法在我们做网站开发的时候用过的很多,首先用户的密码我们每次都是要加密存进数据库。其实在C#中实现对数据(字符串)的MD5加密是非常简单的。引用using System.Security.Cryp...

MD5加密算法在我们做网站开发的时候用过的很多,首先用户的密码我们每次都是要加密存进数据库。
其实在C#中实现对数据(字符串)的MD5加密是非常简单的。
引用using System.Security.Cryptography;
public string Md5(string str)
{
    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] data = md5.ComputeHash(UnicodeEncoding.Default.GetBytes(str));
    StringBuilder strBuilder = new StringBuilder();
    for (int i = 0; i < data.Length; i++)
    {
        strBuilder.Append(data[i].ToString("x2"));
    }
    return strBuilder.ToString();
}
这样返回的是32位的字符串。
但是我们在查看别人的数据库数据的时候有是会发现PASSWORD是16位的。
这是这样计算的:
md5计算(admin)=2123 2f29 7a57 a5a7 4389 4a0e 4a80 1fc3;
16=7a57 a5a7 4389 4a0e;其实是在32位的加密的基础上取了它的重第9位到24位。即substring(8,16)。
其实还有一个就是我在查看别人数据库的时候发现有40位的(主要是各大破解MD5的网站太多了,MD5加密已经没有那么安全了,所以有些人又变换出来了40位的。其实一看40位的也很简单,变换的不复杂。):
我们一起开看看它是怎么运算的:
40位的:7a57 a5a7 4389 4a0e 4a80 1fc3 4389 4a0e 4a80 1fc3
前面16位:即是MD516位的加密7a57 a5a7 4389 4a0e。
剩下的24位:4a80 1fc3 4389 4a0e 4a80 1fc3
不难发现:4a80 1fc3=MD532位加密的后8位+ 4389 4a0e=MD516位加密的后8位+4a80 1fc3=MD532位加密的后8位。
所以这核心就是保存了前面16位。有了这16位就可以保证数据的正确性,至于后面的都是迷惑大家用的。其实也可以进行其他各种的变换。如我对它(admin)进行16加密只后把它首位分开放置.然后中间在按照自己的算法放置字符串。产生一个40位的密码。
为什么会这样说呢?
其实现在的SQL注入还是很严重的。万一我们的网站做的出现了注入漏洞的话,被某些HACKER(脚本小孩),拿到了帐号密码之后,一看是40位的。它就开始蒙了。心想这是什么加密,(其实加密的算法有很多哦。)百度之后呵呵抱歉这是你自己想的一个。这样就可以避免了一些威胁。不是吗?
还有就是自己的密码长度格式:在13位左右-有数字,字母,大小写,以及@字符
例如:AiaoqQ@91b91b
这是我的一个密码的规范:在@之前的密码用字母表示第一个和最后一个都大写
@之后都用数字但是出现了8我就替换成b.
也很好记住:xiaoqq我的昵称,918我的生日重复一次。遇到8=b.
呵呵希望这篇文章对某些人有帮助。

摘自 小七的书房

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论