首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >河豚成本与时间

河豚成本与时间
EN

Stack Overflow用户
提问于 2012-05-19 08:41:53
回答 1查看 3.2K关注 0票数 5

我在php中使用bcrypt/blowfish,当我将成本参数设置为$10 (我认为是1024轮)时,加密过程需要0.1秒。如果我把它设为12美元,它需要0.3秒。我的问题是:这是否占用了0.3秒的cpu时间,也就是说,如果我有100个用户运行这个进程,他们是否都要等待30秒(0.3x100)?(编辑:可能由于双核/多线程处理而缩短,但10秒也是不可接受的)。

还有:保留这个成本参数有什么好的价值?有些人推荐16美元,但在我的网站上(由一个大型的网站主持),这需要超过5秒的时间。

顺便说一下,我正在使用下面的代码来检查所需的时间:

代码语言:javascript
复制
<?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";
?>
EN

回答 1

Stack Overflow用户

发布于 2012-07-09 04:29:45

老实说?标准是7,但是你可以把它设置成你想要的任何东西,即使像4这样的低水平也将是超越一切的。与其他散列相比,它还具有优势,因为它不能通过使用GPU来加速。因此,它就像其他散列一样慢(现在甚至更慢)。因此,它仍然像以往一样缓慢。如果你在10上取0.1s,那就试试5或6,这会使你降低到0.05s左右。那么,这就够了吗?这取决于你对足够的定义是什么。

就我个人而言,任何高于最小值(即4)的内容都是足够的。也不要只做直接的河豚。当有人设法并行,他们将能够抛出您的密码对这个工具,它已经预先设定。尝试在使用bcrypt对密码进行散列之前或之后使用其他快速散列对密码进行散列。使用一些强大的东西,比如sha256或sha512。这样你的系统和其他使用bcrypt的人是不一样的。

由于您已经在使用bcrypt,所以我将假设您使用的是正确的散列(仅限于bcrypt所需的)。

我已经在我自己的笔记本电脑上做了大量的基准测试,我诚实地确定了6作为成本参数,当然它不是默认的7,但它还不够慢,让我担心有人试图进入它。它也比沙家族的哈希慢数百万倍。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10663711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档