我目前正在使用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
这样人们就不必再去外部网站找答案了:
确保有弹性的城堡罐子在您的构建路径上
像这样导入SCrypt:
import org.bouncycastle.crypto.generators.SCrypt;
像这样使用SCrypt:
byte[] sCryptHash = SCrypt.generate(plaintext.getBytes(), salt.getBytes(), cpuDifficultyFactor, memoryDifficultyFactor, parallelismDifficultyFactor, outputLength);