gpt4 book ai didi

php - 我如何在 PHP 应用程序中销售 bcrypt(我应该这样做)?

转载 作者:可可西里 更新时间:2023-11-01 13:16:57 24 4
gpt4 key购买 nike

我正在为一个相对成熟的开源 PHP 项目做贡献。最近,我发现它将密码存储为纯 MD5 哈希值,这对我来说很麻烦。我想如果我要修复它,我还不如 Do It Right(tm),所以我想使用 bcrypt。

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

现在,PHP 本身在 the crypt function 中支持 bcrypt(尽管被误称为简单的“河豚”) .但是,5.3 之前的版本需要系统本身的支持,一般由 crypt_blowfish 提供。 . phpass相同,建议安装 PHP 5.3 或 Suhosin .

由于应用程序的许多用户使用标准共享主机,我不想要求对服务器进行任何特殊配置。我希望只是从 PHP 的 5.3 版本中窃取代码,但它是用 C 编写的,并且(根据我刚刚完成的少量阅读)我不能要求项目用户使用 C 扩展。

我想创建一个 bcrypt 的纯 PHP 端口,但是看着 the source of jBCrypt ,鉴于我对 PHP 或 blowfish 都不是非常熟悉,我不确定我应该这样做,而且这里的错误可能既危险又难以首先检测到。

因此,我向您提出两个(多部分)问题:

  1. 是我缺乏 PHP 知识让我发挥了最大的作用吗?我真的可以使用其中一个已经创建的实现吗?
  2. 我是否应该创建一个简单的循环函数来重复调用 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 上解释了他们的设计决策.

关于php - 我如何在 PHP 应用程序中销售 bcrypt(我应该这样做)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3552464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com