您现在的位置是: 首页> 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进行校验。
参考:https://blog.csdn.net/m_nanle_xiaobudiu/article/details/79285125
很赞哦! (0)
相关文章
文章评论
猜你喜欢
