PHP数据加密技术之一---MD5()和Sha1()加密

PHP数据加密技术

 

Md5()和Sha1()加密算法是单向的,不存在逆向函数得到原来的明文数据

算法调用:

string md5 ( string $str [, bool $raw_output = false ] )

string Sha1 ( string $str [, bool $raw_output = false ] )

 

参数

str

原始字符串。 

raw_output

如果可选的 raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。 

返回值

MD5()以 32 字符十六进制数字形式返回散列值。 

Sha1()以 40 字符十六进制数字形式返回散列值。 

<?php
$p "123456";
echo md5($p);
?>

 

 

它的输出结果如下:

e10adc3949ba59abbe56e057f20f883e

但是这样使用md5()函数是非常不安全的,如此,大家可以到百度上搜索md5解密,会发现存在解密的网站:




 

如此可见直接向上面那样使用md5()函数是不安全的。虽然md5算法是不可逆的,但是因为它对同一个字符
串计算的结果是唯一的,所以一些人可能会使用“字典攻击”的方式来攻破md5加密的系统。这虽然属于暴力解密,却十分有效,因为大多数系统的用户密码都不回很长所以我们的md5编码成的最终数据可以通过一些网站破解:



 

很显然,被破解了,直接使用md5()这个算法是不够复杂的,然后代码修改如下:

<?php
$p "123456";
echo md5(md5($p).md5($p));
?>

 

打印出的结果:

efd52a4f82c94f80f13671ebd7cd2a6d

到网站破解:




 

很明显,他的结果是错误的,我们的密码是123456而不是零。

我们在一个md5()函数的基础上可以通过多层md5()算法进行加密,因为他是单向的,也许大家疑惑为什么网站能够破解,其实网站的就是暴力破解,他们是不断的保存各种编码和密码然后再进行匹配最终得到密码。


 

 



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值