千家信息网

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数据库储存 软件开发运营需要什么 济宁智慧城管软件开发专业制作 上海工程技术大学论文数据库
0