在这种情况下理想$cost
应该是什么来防止暴力攻击,甚至是 ASIC或FPGA
$cost = '06';
$secret_key = bin2hex(random_bytes(64);
$store_data = crypt($secret_key), '$2a$.$cost.$'.bin2hex(random_bytes(16)).'$')
之情况
公司提供由上述代码($secret_key
)生成的用户密钥()来访问撤销一些钱,这个秘密密钥不应该被黑客猜到。
$store_data
是我们存储在数据库中的字符串。
因此,如果攻击者可以访问数据库并了解$store_data
变量,则他应该无法访问$secret_key
。
我使用了bcrypt算法进行哈希,但我不确定,在这种情况下,cost = 6足够安全。
答案 0 :(得分:0)
1999年,当设计bcrypt时,设置了当时的成本因子,以便至少 250 ms来计算哈希值。
这是基于这样一个事实:在1977年,在VAX-11/780上,地穴的评估速度大约是每秒3.6次。 (即每个密码277毫秒)
在我的台式电脑上:
答案 1 :(得分:0)
您不应该完全使用BCrypt ,这不是BCrypt的目的。
BCrypt用于散列用户创建的密码,该密码可能很短,缺乏熵或在许多站点之间重复使用。它不是用于哈希安全生成的长令牌。
您应该只使用SHA256这样的快速加密安全哈希,而不要问您的成本因素可以低到什么程度。完全无需支付BCrypt的成本(以任何成本因子),也不会增加安全性。