我正在使用Java scrypt库进行密码存储.当我加密东西时N
,它需要一个r
和p
值,其文档称为"CPU成本","内存成本"和"并行化成本"参数.唯一的问题是,我实际上并不知道它们的具体含义,或者对它们有什么好的价值; 也许他们以某种方式对应于Colin Percival原创应用中的-t,-m和-M开关?
有人对此有任何建议吗?图书馆本身列出N = 16384,r = 8和p = 1,但我不知道这是强还是弱或是什么.
我目前正在使用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
有人在一段时间之前询问了bCrypt的JavaScript实现,似乎已经编写了自己的代码来处理实现.有没有人在JavaScript中实现sCrypt?
我正在尝试在C#中实现warpwallet代码.我正在使用cryptsharp进行scrypt和PBKDF2实现.但是,我似乎得到的结果与真实的网站不同.
这是我的代码:
static void Main(string[] args)
{
string randomString = "mypassword";
byte[] passwordBytes = Encoding.UTF8.GetBytes(randomString);
byte[] passwordBytesScrypt = new byte[passwordBytes.Length + 1];
Array.Copy(passwordBytes, 0, passwordBytesScrypt, 0, passwordBytes.Length);
passwordBytesScrypt[passwordBytes.Length] = 0x1;
string salt = "salt@gmail.com";
byte[] saltBytes = Encoding.UTF8.GetBytes(salt);
byte[] saltBytesScrypt = new byte[saltBytes.Length + 1];
Array.Copy(saltBytes, 0, saltBytesScrypt, 0, saltBytes.Length);
saltBytesScrypt[saltBytes.Length] = 0x1;
byte[] scryptBytes = CryptSharp.Utility.SCrypt.ComputeDerivedKey(passwordBytesScrypt, saltBytes, 524288, 8, 1, null, 32);
byte[] passwordBytesPBKDF2 = passwordBytesScrypt;
passwordBytesPBKDF2[passwordBytes.Length] = 0x2;
byte[] saltBytesPBKDF2 = saltBytesScrypt;
saltBytesScrypt[saltBytes.Length] = 0x2;
byte[] …
Run Code Online (Sandbox Code Playgroud) 仅使用内置crypto
模块在 Node.js 中实现密码哈希和验证的最佳方法是什么?基本上需要什么:
function passwordHash(password) {} // => passwordHash
function passwordVerify(password, passwordHash) {} // => boolean
Run Code Online (Sandbox Code Playgroud)
人们通常使用bcrypt
或其他第三方库来实现此目的。我想知道内置crypto
模块是否足够大,至少可以满足所有基本需求?
我正在开发一个C应用程序,我需要哈希用户的密码.我知道scrypt目前是"哈希"密码(内存限制,速度慢)的最佳方法之一,但我似乎无法找到一个简单的跨平台C库来为我做这件事.
而且,既然我既不是C专家也不是加密/散列专家,我害怕自己这样做会在系统中引起一些明显的缺陷(这很容易让这些事情搞错).
那么,是否有一个C库可以做到这一点,或者,如果没有,其他库将实现类似的解决方案?(bcrypt可以工作,虽然不如scrypt,...)
我在Google上搜索过,我找不到使用Cryptsharp库的Scrypt用法代码示例(用于哈希密码).
你能提供哈希密码的样本吗?
scrypt ×10
cryptography ×4
c# ×3
javascript ×3
hash ×2
java ×2
.net ×1
bouncycastle ×1
c ×1
encryption ×1
node.js ×1
passwords ×1
python ×1