php - 河豚成本与时间

标签 php time passwords blowfish

我在 php 中使用 bcrypt/blowfish,当我将成本参数设置为 10 美元(我认为是 1024 轮)时,加密过程需要 0.1 秒。如果我将它设置为 12 美元,则需要 0.3 秒。 我的问题是:这是否占用了 0.3 秒的 CPU 时间,即如果我有 100 个用户运行这个进程,他们都必须等待 30 秒(0.3 x 100)吗? (编辑:由于双核/多线程处理,可能会更短,但即使是 10 秒也是 Not Acceptable )。

另外:保留此成本参数的最佳值是多少?有些人推荐 16 美元,但在我的网站(由大型网络主机托管)上需要 5 秒以上。

顺便说一句,我正在使用以下代码来检查所花费的时间:

<?php
// set a password to work with
$var1 = "doodoo1234";

//echo that password onto the screen 
echo $var1 . "<br /><br />";

//Start the clock
$time_start = microtime(true);

//Run blowfish function to encrypt the password
$hashedpass = PassHash::blowfishhash($var1);

//stop the clock  
$time_end = microtime(true);

//echo the password to the screen
echo $echohashedpass . "<br /><br />";

//Echo the length of the encrypted password to the screen
//(this taught me that blowfish always returns a 60 varchar string)
echo strlen($sajpass). "<br /><br />";

$time = $time_end - $time_start;
echo "that took $time seconds\n";
?>

最佳答案

老实说?标准是 7,但您可以将其设置为任何您想要的值,即使像 4 这样的低值仍然会比其他所有突飞猛进。与其他哈希相比,它还有一个优势,即它不能通过使用 GPU 来加速。所以它和其他哈希一样慢(现在甚至更慢)。因此,它仍然像往常一样缓慢。如果你在 10 秒上花费 0.1 秒,那么尝试 5 或 6。那会让你下降到 0.05 秒左右。现在够了吗?这取决于您对足够的定义。

就个人而言,我会说任何高于最小值(即 4)的值都绰绰有余。也不要直接做河豚。当有人设法并行使用它时,他们将能够将您的密码扔给这个已经预先编程的工具。在使用 bcrypt 对密码进行哈希处理之前或之后,尝试使用其他一些快速 哈希对密码进行哈希处理。使用像 sha256 或 sha512 这样强大的东西。这样你的系统就与其他使用 bcrypt 的人不一样了。

由于您已经在使用 bcrypt,我假设您正在使用适当的散列加盐(在 bcrypt 单独需要的内容之外)。

我已经在自己的笔记本电脑上完成了的基准测试,老实说,我确定了 6 作为成本参数,确保它不是默认值 7,但它的速度还不够慢,无法真正获得我担心有人试图进入它。它也比 sha 哈希系列慢数百万倍。

如果您需要一些代码来执行操作(因为我不知道您是否需要),也可以编辑,我已经在此链接上发布了一些代码 Link to implementation of bcrypt based hashing .我不知道你是否想要它,所以这就是为什么我没有把它放在这里。该许可证非常自由,所以如果您还没有自己编写它,我建议您可以使用它(但可能会修改一些东西)。

关于php - 河豚成本与时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10663711/

相关文章:

php - 如何获取magento表名

c - CLOCK_TAI 的纪元是什么?

python - 如何获得两个 datetime.time Pandas 列之间的绝对差?

wordpress - 忘记密码所需的 Woocommerce 简码

c++ - 本地数据库的密码解决方案,在客户端和服务器之间传递

powershell - 保护 PowerShell 脚本中的密码

php - 如何统计条目数?

javascript - Codeigniter - 在 1 个 View 中显示来自 2 个不同模型函数的 2 个不同数据

php - Symfony2,上传新图像或选择现有图像(后台)

time - 如何在 Julia 中以 "H:M:S.s"格式打印 3600.125 秒