妙数

php使用md5加密算法对数据进行加密
MD5加密算法具有不可逆性,是目前比较安全,常用的加密算法,通常用于需要对用户密码等信息进行加密存储的场景,本文主...
扫描右侧二维码阅读全文
14
2018/10

php使用md5加密算法对数据进行加密

MD5加密算法具有不可逆性,是目前比较安全,常用的加密算法,通常用于需要对用户密码等信息进行加密存储的场景,本文主要记录php对数据进行加密的方式

MD5加密的php语法

  • php使用MD5加密非常简便,有现成的函数可以调用
md5(string,raw) 
  • 其中raw为可选参数,TRUE - 原始 16 字符二进制格式;FALSE - 默认。32 字符十六进制数

代码示例(md5)

<?php
//演示php对用户提交密码进行md5加密和md5加盐加密方法
$str = "admin";
echo md5($str);

?>

生成效果

md51.png

  • 这样我们就生成了一串md5加密过的字符串,但是这样的弱口令密码安全吗?
  • 显然是不安全的,我们在任意一个md5解密网站对刚生成的md5序列进行解密
    md52.png
  • 如图所示,密码admin被成功破解。那么不是说md5加密是不可逆的吗,为什么还会被破解?
  • 因为md5生成的唯一性,解密网站依据常用口令逐一生成md5序列,再和提交的密文进行对比,这样才出现了被破解的情况,所以大家在注册账号等情况时,一定要避免使用弱口令密码。

MD5加盐加密

  • 为了更加安全的保存用户密码等敏感信息,md5还可以进行加盐(Salt)的方式加密密文,这样在没有Salt的情况下,密码是很难被破解的
  • MD5加盐(Salt)
  1. 静态Salt
  • 静态salt是一个固定的随机字串,可以人为规定,只需要加在需要加密的数据上,再执行MD5加密即可

示例代码(静态salt加密)

<?php
//演示php对用户提交密码进行md5加密和md5加盐加密方法
$str = "admin";
$salt = 'mioshu';//设置静态salt
echo md5($str.$salt);

?>
  • 生成效果
    md53.png
  • 此时再去刚才的md5解密网站破解,已经不能直接显示出加密前的结果了
    md54.png
  1. 随机Salt(需要存入数据库)
  • 另外一种更加安全的加盐加密方式就是使用随机salt,这样每个salt值都是不同的,破解难度会呈指数级增长,这种情况salt值一定要对应存入数据库
  • 随机salt有各种生成方法,比如最简单的时间戳等,这个没有统一标准,根据自己的情况设置即可,但是一定要将salt值和加密后的序列对应存入数据库,不然无法验证

示例代码(随机salt)

<?php
//演示php对用户提交密码进行md5加密和md5加盐加密方法
$str = "admin";
$salt = time();//设置随机salt为时间戳
echo md5($str.$salt);
echo "<br/>salt值为".$salt;

?>
  • 生成效果
    md55.png
最后修改:2018 年 10 月 23 日 03 : 07 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论