我在计算RbNaCl和Go 的 implementation之间相同的 scrypt 摘要时遇到问题。
这是我使用 rbnacl 生成密钥的方式:
opslimit = 2**20
memlimit = 2**24
digest_size = 32
digest = RbNaCl::PasswordHash.scrypt(
password,
salt,
opslimit,
memlimit,
digest_size
)
opslimit和memlimit参数值已从文档中找到。
这是我用 Go 复制相同结果的尝试:
N := 32768
r := 8
p := 1
keyLength := 32
secretKeyBytes, _ := scrypt.Key(password, salt, N, r, p, keyLength)
从文档中获取N、r、p和keyLength的值。
密码和盐具有相同的值。
我不是密码学家,但据我所知,应该有相同的成本因子值来获得相同的摘要?这里的问题是,由于两种实现都采用不同数量的参数,我也很难找到正确的组合。任何想法如何使这两种实现之间的成本因素匹配,以便我可以在两种编程语言之间计算相同的 scrypt 哈希?