PHP网页设计利用MD5变换算法防穷举(抵触触犯)破译暗码
大部分语言的基础,不是说c有多好,而是c相对起手容易学,让你认为这个是编程语言,换算|算法 MD5是在Web使用法式中最经常使用的暗码加密算法。因为MD5是不成逆的,因此经由MD5盘算失掉后的密文,不克不及经由过程逆向算法失掉原文。回忆在Web使用法式中利用MD5加密文本暗码的初志,就是为了避免数据库中保留的暗码不幸泄漏后被直接取得。但进击者不仅具有数据量伟大的暗码字典,并且创立了良多MD5原文/密文对比数据库,能疾速地找到经常使用暗码的MD5密文,是破译MD5密文的高效路子。但是,MD5密文数据库所利用的是最惯例的MD5加密算法:原文-->MD5-->密文。因而,咱们可使用变换的MD5算法,使现成的MD5密文数据库碌碌无为。
上面演示一些变换算法的例子
固然,在其它的Web开辟言语中,也迥然不同,完整能失掉不异的了局。
变换一:轮回MD5
最轻易了解的变换就是对一个暗码停止屡次的MD5运算。自界说一个函数,它承受$data和$times两个形参,第一个是要加密的暗码,第二个是反复加密的次数。完成这类变换有两种算法――
<?php
//迭代算法
function md5_1_1($data, $times = 32)
{
//轮回利用MD5
for ($i = 0; $i < $times; $i++) {
$data = md5($data);
}
return $data;
}
//递归算法
function md5_1_2($data, $times = 32)
{
if ($times > 0) {
$data = md5($data);
$times--;
return md5_1_2($data, $times); //完成递归
} else {
return $data;
}
}
?>
变换二:密文朋分MD5
虽然用户的暗码是不肯定的字符串,然而只需经由一次MD5运算后,就会失掉一个由32个字符构成的字符串,这时候可以再针对这个定长字符串变换。有点BT的算法是,把这段密文朋分成若干段,对每段都停止一次MD5运算,然后把这堆密文连成一个超长的字符串,最初再停止一次MD5运算,失掉依然是长度为32位的密文。
<?php
//把密文朋分成两段,每段16个字符
function md5_2_1($data)
{
//先把暗码加密生长度为32字符的密文
$data =md5($data);
//把暗码朋分成两段
$left = substr($data, 0, 16);
$right = substr($data, 16, 16);
//分离加密后再兼并
$data = md5($left).md5($right);
//最初把长字串再加密一次,成为32字符密文
return md5($data);
}
//把密文朋分成32段,每段1个字符
function md5_2_2($data)
{
$data =md5($data);
//轮回地截取密文中的每一个字符并停止加密、毗连
for ($i = 0; $i < 32; $i++) {
$data .= md5($data{$i});
}
//这时候$data长度为1024个字符,再停止一次MD5运算
return md5($data);
}
?>
固然,这类密文朋分的详细算法是数之不尽的,好比可以把原密文朋分成16段每段两字符、8段每段4字符,或每段的字符数不相等……
下一页
终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 Ps:以上纯属原创,如有雷同,纯属巧合 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。 小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。 因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
页:
[1]