首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bouncy scrypt实现

Bouncy scrypt实现
EN

Stack Overflow用户
提问于 2014-03-06 14:06:08
回答 3查看 4.4K关注 0票数 12

我目前正在使用scrypt实现密码散列。我已经在GitHub上找到了一个很好的scrypt实现。令我惊讶的是,我还发现了一个 implementation in the Bouncy Castle library。这个类是没有文档的,维基百科没有提到Bouncy城堡作为氪星实现提供者,而且我很难找到任何使用Bouncy scrypt的人的代码示例,所以这在我看来是可疑的。

另一方面,如果我必须在GitHubs密码实现和Bouncy城堡之间进行选择,我更喜欢Bounsi城堡。

有弹性的卡斯尔斯是在监视“真实的东西”吗?我是否可以在JCA上使用Bouncy (或者我是否需要像这里那样直接调用它:AES-256 encryption workflow in scala with bouncy castle: salt and IV usage and transfer/storage)?

编辑:我现在能找到最好的答案:https://www.bouncycastle.org/devmailarchive/msg13653.html

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-17 08:28:12

我可以从bouncycastle.org邮箱得到最好的答案:

是的,scrypt实现是一个真实的东西-也就是说,代码在那里,并且它通过了官方的测试向量。 有几个注意事项:这个实现没有利用密码破解器会产生的所有并行性/优化,因此存在一些防御/攻击者的不对称。Scrypt还基于Salsa20代码函数,Salsa20在Java中的性能相对较差(与AES相同),而在具有SIMD功能的平台上却执行得非常出色(可能快4-5倍)。 Scrypt提供者没有公开Scrypt-也许我要说的是,JCE只有PBE的成本函数的非常原始的表达式(以interation计数的形式)。氪星有两个成本参数,所以它不能被强制到那个API中。 如果有足够的需求,我想可以通过JCE公开一个硬编码的并行化参数或BC特定的参数规范。

票数 0
EN

Stack Overflow用户

发布于 2017-02-02 00:56:25

这样人们就不必去外部网站寻求答案了:

  1. 确保有弹性的城堡罐子在你的建造道路上。
  2. 像这样导入SCrypt: 进口org.bouncycastle.crypto.generators.SCrypt;
  3. 像这样使用SCrypt: byte[] sCryptHash = SCrypt.generate(plaintext.getBytes(),salt.getBytes(),cpuDifficultyFactor,memoryDifficultyFactor,parallelismDifficultyFactor,outputLength);
票数 5
EN

Stack Overflow用户

发布于 2017-07-16 14:54:21

可以使用SCrypt类及其静态方法generate,如下所示:

代码语言:javascript
复制
SCrypt.generate(passwordBytes, salt, costParam, blockSize, parallelization, passwordLength);

我不能说您应该为costParam、blockSize或并行化使用什么值,文档并没有给出太多的信息。在我们的研究中,我们每一项都用了8。

链接到他们的文档: BCrypt - https://www.bouncycastle.org/docs/docs1.5on/org/bouncycastle/crypto/generators/BCrypt.html SCrypt - https://www.bouncycastle.org/docs/docs1.5on/org/bouncycastle/crypto/generators/SCrypt.html

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

https://stackoverflow.com/questions/22226867

复制
相关文章

相似问题

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