PHP实现基于PBKDF2标准的password_hash和password_verify函数是怎样的
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,PHP实现基于PBKDF2标准的password_hash和password_verify函数是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
Ntp硬件服务器需要互联网
湖南推广软件开发诚信服务
石家庄软件开发价格
数据安全网络安全区别
查找不到网络连接服务器
江南服务器
软件开发公司的规模
查看数据库信息的命令是
阳山县人民医院网络安全等级保护
存储区域网络安全黑板报
南宁做软件开发的公司有哪些
软件开发的要不要专升本
手抄报网络安全模板a3
有关网络安全的证书可以考
嘉定区创新数据库服务商收费标准
网络安全者之间进行合作
泗洪小型网络技术解决方案
qq邮箱imap服务器
优势的软件开发外包
家政服务数据库
国家对计算机网络技术发布的政策
轻量应用服务器能修改ip地址吗
网络安全逆向分析是什么意思
腾讯云服务器安全协议
战地1中国服务器
软件开发接口原则
java数据库储存
软件开发运营需要什么
济宁智慧城管软件开发专业制作
上海工程技术大学论文数据库