PHP和Python实战bcrypt算法

栏目: Python · 发布时间: 5年前

内容简介:本文是 bcrypt() 算法介绍的第二篇,第一篇参考《安全存储口令的业界标准:bcrypt算法》,本文主要介绍PHP和Python语言中如何更好使用 bcrypt 算法保护口令安全。在一个系统中,可能有多种语言需要校验同一个口令密文,PHP和Python在操作上也是互通的。在 PHP 语言中,已经不建议使用 bcrypt() 算法,推荐使用

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

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

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

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

string password_hash($password, int$algo[,array $options])

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

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

看看如何使用:

// PHP 5.5 以上版本
function better_crypt($input, $rounds = 7) {
    $options = [
        'cost' => $rounds,
    ];
    return password_hash($input, PASSWORD_BCRYPT, $options);
}

$hash = better_crypt("woshi123pas");

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

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

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

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

// hash 是保存在数据库中的口令密文
function verify_crypt($input, $hash, $rounds = 7) {
    if (password_verify($input, $hash)) 
        return TRUE;
    return false ;
}

$hash = better_crypt("woshi123pas");
var_dump(verify_crypt("woshi123pas",$hash));

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

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

贴代码:

import bcrypt

def bcryptfun(password):
        salt = bcrypt.gensalt(rounds=12)
        print(salt)
        hashed_passwd = bcrypt.hashpw(password, salt)
        return (hashed_passwd)

password = 'wo@yigepass'
password = bytes(password,'utf-8')
#加密口令
mw=bcryptfun(password)
print (mw)

#校验
mwjy = bcrypt.hashpw(password, mw) == mw
print(mwjy)

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

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浪潮之巅(第2版)(套装上下册)

浪潮之巅(第2版)(套装上下册)

吴军 / 人民邮电出版社 / 2013-7 / 80.00元

一个企业的发展与崛起,绝非只是空有领导强人即可达成。任何的决策、同期的商业环境,都在都影响着企业的兴衰。《浪潮之巅》不只是一本历史书,除了讲述科技顶尖企业的发展规律,对于华尔街如何左右科技公司,以及金融风暴对科技产业的冲击,也多有着墨。此外,这本书也着力讲述很多尚在普及或将要发生的,比如微博和云计算,以及对下一代互联网科技产业浪潮的判断和预测。因为在极度商业化的今天,科技的进步和商机是分不开的。 ......一起来看看 《浪潮之巅(第2版)(套装上下册)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换