加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在PHP应用程序中提供bcrypt(我应该)?

发布时间:2020-12-13 14:14:39 所属栏目:PHP教程 来源:网络整理
导读:我正在为一个相对成熟的开源 PHP项目做出贡献.最近,我发现它将密码存储为普通的MD5哈希,这对我来说非常麻烦.我想如果我要修复它,我也可以选择Do It Right(tm),所以我想使用bcrypt. 首先,我发现其他语言:bcrypt-ruby似乎使用OpenBSD的原始C代码或jBCrypt的ja
我正在为一个相对成熟的开源 PHP项目做出贡献.最近,我发现它将密码存储为普通的MD5哈希,这对我来说非常麻烦.我想如果我要修复它,我也可以选择Do It Right(tm),所以我想使用bcrypt.

首先,我发现其他语言:bcrypt-ruby似乎使用OpenBSD的原始C代码或jBCrypt的java代码. py-bcrypt是BSD代码的薄包装器. BCrypt.net是jBCrypt的直接港口.

现在,PHP本身在the crypt function中支持bcrypt(虽然误导性地简称为’blowfish’).但是,5.3之前的版本需要系统本身的支持,通常由crypt_blowfish提供.phpass是相同的,并建议安装PHP 5.3或Suhosin .

由于该应用程序的许多用户使用标准共享主机,我不想要求服务器的任何特殊配置.我希望只是从PHP的5.3版本中窃取代码,但它是在C中,并且(从我刚刚完成的一小部分阅读中)我不能要求为项目的用户使用C扩展.

我想到只是创建一个纯粹的PHP端口bcrypt,但是看看the source of jBCrypt,我不确定我应该这样,因为我对PHP或河豚不太熟悉,而且这里的错误可能既危险又困难首先要检测.

所以,我向你提出两个(多部分)问题:

>我缺乏PHP知识是否能让我受益匪浅?我真的可以使用已经创建的实现之一吗?
>我应该只创建一个简单的loooping函数,重复调用sha1()或md5()一段可配置的次数?

Is my lack of PHP knowledge getting the best of me? Can I really use one of the already-created implementations?

不幸的是,你是对的.在5.3.0之前,PHP默认不支持bcrypt.相反,它依赖于操作系统的支持(检查CRYPT_BLOWFISH常量).正如您所指出的那样,Suhosin是一种选择.

Should I instead just create a simple loooping function that calls sha1() or md5() repeatedly for some configurable number of times?

关于密码学的最佳建议是“不要自己动手”.重复调用sha1()或md5()可能会也可能不会增加安全性.

另一方面,bcrypt的作者在this paper年解释了他们的设计决定.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读