您现在的位置是: 首页> PHP>php数据加密:md5+salt与password_hash()优缺点 所属分类:PHP

php数据加密:md5+salt与password_hash()优缺点

初柒先生 2019-09-05 12:05 php】 【md5】 【数据加密 310人已围观

简介在编写登陆功能时,都需要对密码进行。这时候我们就会用md5和password_hash对密码进行加密,今天要记录一下这两种加密的使用方式,以及优缺点。

在编写登陆功能时,都需要对密码进行。这时候我们就会用md5和password_hash对密码进行加密,今天要记录一下这两种加密的使用方式,以及优缺点。

md5+salt加密

直接使用md5()方法进行加密,是很容易被破解的,需要加上salt值提高破解难度。md5+salt值后即使被破解出密码+salt值的最终密文,还需要进一步组合才能破解出密码,同时如果网站设置登陆错误次数封闭账号那就更难了。(还是有被破解的可能)

加密代码如下:

function md5_salt_hash($pass){
	//定义一个salt值,最好足够长,或者随机
    $salt = "dis58Ds51cd"; 
    return md5($pass, $salt);
}

password_hash()加密

password_hash()是从PHP5.5版本开始引入的函数,属于内核自带,无需安装扩展,使用起来很方便方便。它属于Password Hashing API(创建和校验哈希密码)函数之一。

加密和核对主要函数: password_hash()、password_verify();

password_hash()函数的定义如下:

string password_hash(string $password, integer $algo [, array $options ])
	 参数:
	 $password 密码
	 $algo  哈希算法
	 $options  选项

加密方式一:

//password_hash函数生成的密码是动态的
//用户注册时提交的密码
$pass_user_commit = '123456';
//对用户提交的密码进行password_hash加密,并存储到数据库
$pass = password_hash($pass_user_commit,PASSWORD_BCRYPT);
echo '加密后:
'; echo $pass;//刷新后显示又不一样 //用户登录时提交的密码 $pass_user = '123456'; //将用户登录时提交的密码与用户注册时提交的密码进行对比 $re = password_verify($pass_user,$pass); if ($re) { echo "密码真确"; } else { echo "密码错误"; }

加密方式二:

//用户注册时提交的密码
$pass_user_commit = '123456';
//对用户提交的密码进行password_hash加密,并存储到数据库
$option = array('cost'=>10);//cost用来指明算法递归的层数
$pass = password_hash($pass_user_commit,PASSWORD_BCRYPT,$option);
echo $pass;
//用户登录时提交的密码
$pass_user = '123456';
//将用户登录时提交的密码与用户注册时提交的密码进行对比
$re = password_verify($pass_user,$pass);
if ($re){
	echo "密码正确";
}else{
	echo "密码错误";
}

总结

md5+salt加密,可跨语言加密解密,即加密后的数据可以在其他语言中使用。
password_hash加密,只能通过php的password_verfiy进行校验。

总的来说,如果开发的项目不与其他语言开发的项目进行交互的话,推荐使用password_hash();如果可能要交互的话,就需要注意salt值得复杂和安全性就行了。
参考:https://blog.csdn.net/m_nanle_xiaobudiu/article/details/79285125

很赞哦! (0)

初柒先生 2019-09-05 12:05 php】 【md5】 【数据加密 310人已围观

站点信息

  • 建站时间:2019-09-04
  • 网站名称:初柒先生
  • 主题模板《今夕何夕》
  • 文章统计:299条
  • 文章评论:490条
  • 统计数据百度统计
  • 微信公众号:初柒先生(chuqi_sir)
  • 微信扫二维码,关注我们吧!
搜索历史:
0.071131s