当前位置: 首页 > 知识库问答 >
问题:

什么是最佳的解密工作因素?

温峻熙
2023-03-14

我使用Java scrypt库存储密码。当我加密东西时,它会调用nrp值,它的文档将这些值称为“CPU成本”、“内存成本”和“并行化成本”参数。唯一的问题是,我不知道它们的具体含义,也不知道它们有什么好的价值观;也许它们与Colin Percival最初应用程序上的-t、-m和-m开关有某种对应?

有人对此有什么建议吗?库本身列出了N=16384,r=8,p=1,但我不知道这是强是弱还是什么。

共有1个答案

戚宏浚
2023-03-14

作为开始:

cpercival在他2009年的幻灯片中提到了一些事情

  • (N=2^14,r=8,p=1)用于<100ms(交互使用),和
  • (N=2^20,r=8,p=1)用于<5s(敏感存储)。

即使在今天(2012-09年),这些值也足够适合一般使用(某些WebApp使用password-db)。当然,细节取决于应用程序

此外,这些数值(大部分)意味着:

  • n:一般工作因子,迭代计数。
  • r:用于基础哈希的块大小;微调相对内存开销。
  • p:并行化因子;微调相对CPU成本。

RP旨在适应CPU速度、内存大小和带宽没有按预期增加的潜在问题。如果CPU性能提高得更快,就会提高P,如果内存技术的突破提供数量级的改进,就会提高R。而n是为了跟上性能每隔一段时间翻一番的速度。

重要:所有值都会改变结果。(更新:)这就是为什么所有scrypt参数都存储在结果字符串中的原因。

 类似资料:
  • 问题内容: 我正在使用Java scrypt库 进行密码存储。当我加密事物时,它需要一个和值,其文档称为“ CPU成本”,“内存成本”和“并行化成本”参数。唯一的问题是,我实际上不知道它们的具体含义,或者对他们有什么好的价值。也许它们以某种方式对应于Colin Percival原始应用程序上的-t,-m和-M开关? 有人对此有任何建议吗?该库本身列出了N = 16384,r = 8和p = 1,但

  • 问题内容: 我刚开始学习Go,并通读现有代码以学习“其他人的做法”。在这种情况下,遍历使用go“工作区”,尤其是与项目依赖关系有关的地方。 在处理各种Go项目时,使用一个或多个Go工作区(即$ GOPATH的定义)的常见(或存在)最佳实践是什么?我应该期望有一个类似于我所有项目的中央代码存储库的Go工作区,还是在我处理这些项目时都明确将其分解并设置$ GOPATH(有点像python) virtu

  • 问题内容: 根据您的经验,您可以推荐一些东西吗?我使用了izpack,它是一个非常不错的工具,还有其他更好的工具吗? 问题答案: 在MS Windows中,NSIS很棒,它是免费的,并且OSS 参考:具有自动JRE安装的Java启动器

  • 问题内容: 我是一名PHP开发人员,现在我使用Notepad++进行代码编辑,但是最近我一直在寻找IDE以简化工作。 我研究了Eclipse,Aptana Studio和其他几个工具,但我不确定,它们看上去都不错,但是有点复杂。我相信一旦习惯了,一切都会变得容易,但是我不想浪费时间。 这就是我要寻找的: FTP支持 代码突出显示 SVN支持会很棒 Ruby和JavaScript会很棒 问题答案:

  • 问题内容: 至少有六打Django应用程序为Django提供OpenID身份验证: django-openid django-openid-auth 另一个django-openid-auth,似乎已经死了 django-authopenid django-socialauth(还提供对Twitter和Facebook帐户的身份验证) django-socialregistration(也具有Fa

  • 问题内容: 与Cipher合作时,我观察到以下内容。 加密码: 解密代码: 运行Decrypt代码时,出现IllegalBlockSizeException(输入长度​​必须为16的倍数)。 但是如果我将解密代码更改为 它工作正常。我知道这是有规律的。所以我以为是因为我没有提到填充。所以我尝试在加密过程中提供模式和填充, 加密码: 解密代码: 但是它失败,并带有IllegalBlockSizeEx