大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你知道下面的程序输出结果是多少吗?
创新互联建站长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为崇明企业提供专业的网站建设、成都网站设计,崇明网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
?php
echo md5('');
?
结果是:
d41d8cd98f00b204e9800998ecf8427e
上面的结果你是不是很眼熟呀,它就是你的结果呀,因为你的$_SESSION['pwd']为空,不信你输出看看。
把这段密文分割成若干段,对每段都进行一次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);
}
?
一般用来加密密码,因为md5属于不可逆的加密方式,所以认为它的安全性比较高,不过现在网上有一些网站专门提供md5解密,他们这种解密都是用的列举法,基本上12位以下的数字组合都是能够解密的,所以密码一定要用数字和字母的组合。
1、先给你原来的数据表增加一个字段,字段名为md5,类型int,然后运行一个sql语句:
sql语句:update xxx set md5=0 将md5这个字段值变成0,即表示该数据未MD5保存。
2、把这段代码保存为rewrite.php并把数据库名修改成你对应的数据库,然后运行。最好先把你的数据库导出到本地的数据库,然后在本地亲自测试以下这段代码的效果,之后再进行替换。
?php
/*读取md5为0的前30条数据,由于考虑到PHP有个30秒超时的内置,所以一次更新30条,也可以大大降低对数据库的负担。*/
$sql=mysql_query("select id,password from XXX where md5=0 order by id desc limit 0,30");
$num=mysql_num_rows($sql);
if($num==0){
echo "所有MD5密码替换完毕。"; //如果数据库里面所有md5=0的记录都变成了md5=1,则为修改完毕。
exit();
}else{
while($row=mysql_fetch_array($sql)){
$md5_pwd=md5($row['password']); //获取原密码,进行MD5化。
$query=mysql_query("update XXX set md5=1,password='".$md5_pwd."' where id=".$row['id'].""); //将该条数据进行更改,把原密码改成MD5加密后的,并把md5值变成1,表示已经该条数据已经MD5加密
unset($query);
}
mysql_free_result($sql);
unset($sql,$row);
echo "meta http-equiv=\"refresh\" content=\"0;url=rewrite.php\""; //该30条记录转化完毕,继续跳到这个页面执行,一直循环到替换结束。
exit();
}
mysql_close();
?
1.
通过get或post获取前台传来的密码
$_POST['password'];
2.
md5
函数加密: $pwd
=
md5($_POST['password']);
3.
写入数据库
insert
into
table(name,pwd)
value('name',$pwd);