Bouncy Castle scrypt实施
我目前正在使用scrypt实现密码哈希。 我已经在GitHub上找到了一个很好的scrypt实现。 令我惊讶的是,我还在Bouncy Castle图书馆中发现了一个scrypt实现 。 这个类没有记录,维基百科没有提到Bouncy Castle作为scrypt实现提供者,我真的很难找到使用Bouncy Castles scrypt的人的任何代码示例,所以这看起来有些可疑。
另一方面,如果我不得不在GitHubs加密实现和Bouncy Castle之间做出选择,我宁愿选择Bouncy Castle。
那么Bouncy Castles是否会破坏 “真实的东西”? 我可以使用Bouncy Castles scrypt而不是JCA提供者API(或者我是否需要像这里一样直接调用它: 带有充气城堡的scala中的AES-256加密工作流程:盐和IV的使用和传输/存储 )?
编辑:我现在可以得到的最佳答案: https : //www.bouncycastle.org/devmailarchive/msg13653.html
这样人们就不必去外部网站寻求答案:
- 确保充气城堡jar子在您的构建路径上
-
像这样导入SCrypt:
import org.bouncycastle.crypto.generators.SCrypt;
-
像这样使用SCrypt:
byte[] sCryptHash = SCrypt.generate(plaintext.getBytes(), salt.getBytes(), cpuDifficultyFactor, memoryDifficultyFactor, parallelismDifficultyFactor, outputLength);
您可以使用SCrypt
类及其静态方法generate
如下:
SCrypt.generate(passwordBytes, salt, costParam, blockSize, parallelization, passwordLength);
我无法真正说出你应该为costParam,blockSize或并行化使用什么值,文档对它没有太多说明。 在我们的研究中,我们每个人使用8。
链接到他们的docus:BCrypt – https://www.bouncycastle.org/docs/docs1.5on/org/bouncycastle/crypto/generators/BCrypt.html SCrypt – https://www.bouncycastle.org/docs/docs1。 5ON /组织/ BouncyCastle的/密码/发电机/ SCrypt.html