php通过bcrypt,PHP和Python实战bcrypt算法

本文是 bcrypt() 算法介绍的第二篇,第一篇参考《安全存储口令的业界标准:bcrypt算法》,本文主要介绍PHP和Python语言中如何更好使用 bcrypt 算法保护口令安全。

在一个系统中,可能有多种语言需要校验同一个口令密文,PHP和Python在操作上也是互通的。

在 PHP 语言中,已经不建议使用 bcrypt() 算法,推荐使用Password Hashing Functions。

这个库最重要的一个函数是 password_hash,原型:

1571062604125452.png

$algo 表示使用那种 Hash 算法,默认是 PASSWORD_DEFAULT,表示 bcrypt 算法。

$options 可以有两个属性,cost 表示迭代因子次数,$salt 表示可以显示输入 salt,但从 php7 版本开始废弃 $salt 参数,也就是由函数生成不可猜测的 salt。

看看如何使用:

1571062611572727.png

接下去重点看下口令密文的输出 $2y$07$xiJjq8T8RMl.4eIlQs3UhOGrm/WoO7.GcuQIZfOHCFdm0nVRP3WjC。

其中 $2y 表示采用 bcrypt() 算法,10 表示迭代因子,xiJjq8T8RMl.4eIlQs3UhOG 表示 salt,剩余部分才是口令密文。

等等,在《如何安全存储口令?了解下Hash加盐的原理》这篇文章中说过,salt 和口令密文应该分开存储,但很多文章在介绍 crpyt 算法的时候,都没有建议 salt 和 口令密文分开存储,从安全的角度,请务必将迭代因子、salt、口令密文分开存储。

如果想校验口令密文,那么可以使用 password_verify() 函数校验,贴代码:

1571062622108968.png

还可以更新口令密文,调用 password_needs_rehash() 即可,定期更新 salt,可以更安全保护口令。

最后介绍下 Python 中的 bcrypt 包,如果没有安装,使用 pip3 install bcrypt 安装。

贴代码:

1571062632332511.png

Python 和 PHP 校验口令密文是互通的,大家可以测试下。

关注我的wx g z h(ID:yudadanwx,虞大胆的叽叽喳喳)。

本文转载自异步社区。

原文链接:https://www.epubit.com/articleDetails?id=Naafab154-0ce3-4796-ac95-b4433418cde5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值