PHP实现基于PBKDF2标准的password_hash和password_verify函数是怎样的
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,PHP实现基于PBKDF2标准的password_hash和password_verify函数是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以
千家信息网最后更新 2025年02月02日PHP实现基于PBKDF2标准的password_hash和password_verify函数是怎样的
PHP实现基于PBKDF2标准的password_hash和password_verify函数是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
最近国家对网络安全要求很严格,我们产品的合作伙伴要求我们使用PBKDF2标准来存储密码。由于对这个标准不熟悉,于是我做了点功课。
一个基本的常识,用户的密码不能明文存储,不然,一旦黑客获取到了数据库信息,密码就直接泄露了。
升级一点,密码直接使用sha1或者更高安全的sha2算法,生成散列值,存入数据库,大部分的密码存储就是这样设计的。这样是否就足够安全了呢?
不是,因为黑客依然可以使用彩虹表和暴力破解的方式破解密码。
要解决这两个问题,就要做到以下两点:
1. 密码生成过程中加入随机salt,做到同一个密码每次hash值都不同,使彩虹表失效。
2. 加密算法的运行速度相对比较慢,这样会使黑客的暴力破解成本增加。
目前主流的密码存储算法有bcrypt和PBKDF2等,PHP从5.5开始加入了password_hash和password_verify函数,内置支持了bcrypt算法,如果想加强密码存储的安全性,对算法没有特别要求,可以直接使用。
然而对于需要使用PBKDF2标准处理加密存储,就没有现成的函数可以使用了,不过PHP在5.5开始加入了hash_pbkdf2函数,于是使用这个函数我实现了基于PBKDF2标准的password_hash以及password_verify函数。代码如下:
function password_hash_pbkdf2($password){ $iterations=1000; $length=30; $salt = openssl_random_pseudo_bytes(8); $salt_encode=base64_encode($salt); $hash = hash_pbkdf2("sha256", $password, $salt, $iterations, $length); return $hash.$salt_encode;}function password_verify_pbkdf2($password,$hash){ $iterations=1000; $length=30; $passhash=substr($hash,0,$length); $salt=base64_decode(substr($hash,$length)); $passhash3=hash_pbkdf2("sha256", $password, $salt, $iterations, $length); if($passhash==$passhash3){ return true; } return false;}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
密码
函数
存储
标准
算法
安全
黑客
数据
数据库
暴力
彩虹
加密
帮助
支持
生成
不同
清楚
两个
主流
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
博拉科技和工业互联网
冬奥会服务器计算
client如何连接数据库
网络技术学院风穿搭
苏州智壳互联网科技有限公司
数据库哪个类型可以把0放前面
视频云转码服务器端
服务器运行中出现死机
北京专业软件开发公司
新城区网络安全集中宣传
桥西区数据库张波简历
郴州网络安全宣传
德州供热站自动化控制软件开发
数据库的建模工具完整绿色版
ip地址数据库是干啥的
互联网和科技基金
数据库连接错误请联系管理
软件开发公司业务流程
施耐特网络技术有限公司
数据库自动生成系统报表
网络安全感知架构
万方数据库检索性能特点
服务器管理器添加域用户
中文单字数据库
机柜 服务器拆下来
娄底网络安全宣传周主题党日
中南大学数据库概论考试
战地5 服务器
java调数据库加缓存
asp连数据库源码