安全|问题
php代码:--------------------------------------------------------------------------------
$srand = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789';
$length = strlen($srand);
if (!($dir = @opendir(/dic))) {
mkdir (dic, 0777);
}
for ($q=0; $q if ($q > 25 && $q $op = 'cap';
} else {
$op = '';
}
$fp = fopen(./dic/.$op.$srand[$q]..txt, w);
$crack = $srand[$q];
fputs($fp, $crack.|.md5($crack).\n);
for ($m=0; $m $crack = $srand[$q].$srand[$m];
fputs($fp, $crack.|.md5($crack).\n);
for ($l=0; $l $crack = $srand[$q].$srand[$m].$srand[$l];
fputs($fp, $crack.|.md5($crack).\n);
for ($o=0; $o $crack = $srand[$q].$srand[$m].$srand[$l].$srand[$o];
fputs($fp, $crack.|.md5($crack).\n);
}
}
}
fclose($fp);
}
--------------------------------------------------------------------------------
需要注意地是,这只是一个例子,为了简单期间,我们锁定密码字元为26个小写字母,26个大写字母,10个数字(相信应该适合大多数密码了,不知哪位bt朋友加标点符号呢?呵呵……),而我们只测试四位以内地密码,密码位数增多时原理相同,只是破解可能性大大降低,这个一会儿再讲。
这样,就再dic目录下产生了一系列字典文件。
现在,让我们来做一个md5的随机密码:
php代码:--------------------------------------------------------------------------------
$afcontent = file(./dic/.$op.$srand[$s]..txt, r);
foreach($afcontent as $sdics) {
$adics = explode(|, $sdics);
if (substr($adics[1], 0, 32) == $md5_pwd) {
echo 破解密码为:.$adics[0].
;
$mtime = explode(' ', microtime());
$endtime = $mtime[1] + $mtime[0];
echo 总耗时:.round($endtime - $starttime, 6).秒
;
echo 继续测试;
exit();
}
}
for ($s=0; $s if ($s >25 && $s $op = 'cap';
} else {
$op = '';
}
$afcontent = file(./dic/.$op.$srand[$s]..txt, r);
foreach($afcontent as $sdics) {
if (md5($sdics) == $md5_pwd) {
echo 破解密码为:.$sdics;
exit();
}
}
}
--------------------------------------------------------------------------------
在程序中,你再加上检测运行时间的代码,就可以知道破解一个62字元四位长度的md5密码需要多长时间了。。。
没测之前,大家先估计一下呢?
还有,现在默认要产生大概537m~~
且需花费15分钟左右生成字典(在我piii733 256m 内存上)