我在使用 bcrypt 时遇到的问题是该模块无法导入 iOS 上的 Pythonista 应用程序,这是我需要运行脚本的地方。你还推荐什么类似于 bcrypt 的可以生成随机盐的东西,并且有类似内置的 checkpw() 函数来快速验证加盐密码?
问问题
54 次
1 回答
0
如果 pbkdf2 本机可用,我会在尝试推出自己的 bcrypt 之前使用它。当它的工作因子足够大时,当 bcrypt 或 scrypt 不可用时,它仍然是一个可靠的选择,并且直接使用它比尝试手动重新创建其他东西更安全。
不了解您的用例的更多信息,一般建议:使用具有足够多轮数的 pbkdf2 来占用目标设备的处理器吞吐量上限大约半秒。这使 UX 保持在可容忍的等待时间内,同时仍然提供合理的离线攻击抵抗力。
我还建议在一定范围内(如一千)稍微随机化该轮数。例如,如果您将 200,000 确定为具有可接受的 500 毫秒延迟,我会随机选择 200,000 到 202,000(或类似的值)之间的值 - 确保大多数用户彼此之间会有不同的轮次所需的任何值(假设所有用户密码可能会被聚合到一个可能被泄露并且哈希被盗的位置)。这是因为一些较新的“关联”/“相关”攻击只有在一组散列的所有成本因素都相同时才能很好地对抗一组散列。
从长远来看,还要确保您的代码很容易接受轮数的可变下限和上限,因此您可以选择随着处理器的进步而随着时间的推移增加轮数。(您甚至可以根据正在创建密码的处理器获得幻想并动态计算轮次范围,以便将来无需任何额外干预即可准备好。)
于 2020-12-13T03:18:21.397 回答