|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大部分语言的基础,不是说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字符,或每段的字符数不相等……
[1] [2] 下一页
终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。 |
|