最安全的 PHP 密码加密方法

前言:

在PHP开发过程中,很多人PHP密码加密都是用的md5和sha1(包括sha256.......),但不知道,随着技术进步和计算机硬件的提升(集群、分布式、云计算),破解者可以快速使用“暴力”(彩虹表)方式来寻找密码加密后散列码所对应的原始数据。

最安全的PHP密码加密方法:

PHP官方自带的密码哈希函数 password_hash()
常用的MD5、SHA1、SHA256哈希算法,是面向快速、高效进行哈希处理而设计的。随着技术进步和计算机硬件的提升,如今强大的计算机很容易破解这种算法。也就是说,不要用MD5、SHA1、SHA256这种哈希方法加密密码了,不太安全。

还好,PHP内置了密码哈希函数password_hash,使用这个方法,PHP会升级底层的算法,达到如今的安全标准水平。

注意:PHP 5.5 之后引入 Password hashing API 用于创建和校验哈希密码,它属于内核自带,无需进行任何扩展安装和配置。

函数具体怎么用?我就不多说了,请大家自行查手册,我简单给大家解释一下:为什么建议大家用password_hash()函数?
1、password_hash()会随机生成“盐” 。

2、password_hash()加密后的值包括了“随机盐”+“密码散列“组合的值。当然生成这个值是通过了一定算法的,不要问为什么?

3、数据库只需要一个字段就可以存取“随机盐”+“密码散列“值。我以前开发项目,为了保证不同用户用不同的盐,我数据库还用了两个字段,一个存密码散列值,另一个存盐的值。

4、密码验证简单,只需要用password_verify()函数验证即可!
第一步:password_hash() 加密

用法示例:(推荐)

<?php
/**
 * 我们想要使用默认算法散列密码
 * 当前是 BCRYPT 算法,并会产生 60 个字符的结果。
 * 据说bcrypt算法永不过时。
 *
 * 请注意,随时间推移,默认算法可能会有变化,
 * 所以需要储存的空间能够超过 60 字(255字不错)
 */
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
?>

以上例程的输出类似于:

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

第二步:加密后的散列值存数据库。

这样我们可以直接把上面加密后的值存入数据库,只需要一个字段。

第三步:password_verify() 验证密码是否和散列值匹配?

用法示例:

<?php
// 想知道以下字符从哪里来,可参见 password_hash() 的例子
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (password_verify('rasmuslerdorf', $hash)) {
    echo '密码正确';
} else {
    echo '密码错误';
}
?>

更多相关密码散列算法函数:

password_algos — 获取可用的密码哈希算法ID

password_get_info — 返回指定散列(hash)的相关信息

password_hash — 创建密码的散列(hash)

password_needs_rehash — 检测散列值是否匹配指定的选项

password_verify — 验证密码是否和散列值匹配

请参考PHP官方手册:https://www.php.net/manual/zh/ref.password.php

总结:

可能很多人不知道,password_hash() 这个函数,它的前身其实就是phpass,phpass是一个开源类库,它可以让我们更方便使用bcrypt加密算法。

phpass网址:http://www.openwall.com/phpass/

相关说明:

1、VIP会员无限制任意下载,免积分。立即前往开通>>

2、下载积分可通过日常 签到绑定邮箱 以及 积分兑换 等途径获得!

3、本站资源大多存储在云盘,如出现链接失效请评论反馈,如有密码,均为:www.ipipn.com。

4、所有站内资源仅供学习交流使用。未经原版权作者许可,禁止用于任何商业环境,否则后果自负。为尊重作者版权,请购买正版作品。

5、站内资源来源于网络公开发表文件或网友分享,如侵犯您的权益,请联系管理员处理。

6、本站提供的源码、模板、软件工具等其他资源,都不包含技术服务,请大家谅解!

7、源码、模板等资源会随着技术、坏境的升级而存在部分问题,还请慎重选择。

PS.源码均收集自网络,如有侵犯阁下权益,请发信件至: admin@ipipn.com .


源站网 » 最安全的 PHP 密码加密方法

发表评论

赞助本站发展 维持服务器消耗

全站源码免费下载 立刻赞助