!
也想出现在这里? 联系我们
内容广告块

PHH密码加密最难破解的方法

释放双眼,带上耳机,听听看~!

本文遵守署名 4.0 国际 (CC BY 4.0)协议

常用的MD5、SHA1、SHA256哈希算法,是面向快速、高效进行哈希处理而设计的。随着技术进步和计算机硬件的提升,如今强大的计算机很容易破解这种算法。也就是说,不要用MD5、SHA1、SHA256这种哈希方法加密密码了,不太安全。
还好,PHP内置了密码哈希函数password_hash,使用这个方法,PHP会升级底层的算法,达到如今的安全标准水平。

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

函数具体怎么用?我就不多说了,请大家自行查手册,我简单给大家解释一下:为什么建议大家用password_hash()函数?

  • password_hash()会随机生成“盐” 。
  • password_hash()加密后的值包括了“随机盐”+“密码散列“组合的值。当然生成这个值是通过了一定算法的,不要问为什么?
  • 数据库只需要一个字段就可以存取“随机盐”+“密码散列“值。我以前开发项目,为了保证不同用户用不同的盐,我数据库还用了两个字段,一个存密码散列值,另一个存盐的值。
  • 密码验证简单,只需要用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 — 验证密码是否和散列值匹配
总结:
可能很多人不知道,password_hash() 这个函数,它的前身其实就是phpass,phpass是一个开源类库,它可以让我们更方便使用bcrypt加密算法。

请参考PHP官方手册:PHP官方手册
phpass网址:phpass网站

转载请注明来自董岩松博客

给TA打赏
共{{data.count}}人
人已打赏
学习日记

wordpress站长如何给新站做SEO优化!网站seo排名

2020-11-26 8:46:11

学习日记技术笔记无处安放

利用免费Docker容器镜像服务搭建无限容量不限速的网盘

2020-11-27 8:04:38

版权声明 本站所发布的一切与破解相关的文章仅限用于学习和研究目的,请在下载后的24个小时之内,从您的电脑中彻底删除。所有资源均来自于网络,不得用于商业或者非法用途,否则一切后果请用户自负。如有问题请及时与我联系,QQ:526733428,或提交工单。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
购物车
优惠劵
今日签到
有新私信 私信列表
搜索