Encryption Swift应用中的Hash密码

Encryption Swift应用中的Hash密码,encryption,passwords,hash,scrypt,Encryption,Passwords,Hash,Scrypt,为了安全起见,我将加密一些数据,包括应用程序中的用户密码 我的同事选择了scrypt哈希算法,长度为64字节,带有固定种子,然后转换为十六进制 散列“A12345678Z”导致:25fac84a1cc3a8f6706848d1016cfe7e9d3631691306dcacae68c11c7b54f0bf89e7a7fc51f7fcc19671775acb21c8d928c4c96bb66d915925de58b8b36ab251 种子是“HeanpyftAkWilfUd” 在服务器上,他们正在

为了安全起见,我将加密一些数据,包括应用程序中的用户密码

我的同事选择了scrypt哈希算法,长度为64字节,带有固定种子,然后转换为十六进制

散列“A12345678Z”导致:
25fac84a1cc3a8f6706848d1016cfe7e9d3631691306dcacae68c11c7b54f0bf89e7a7fc51f7fcc19671775acb21c8d928c4c96bb66d915925de58b8b36ab251

种子是“HeanpyftAkWilfUd

在服务器上,他们正在使用以下实现:

例如:

scrypt.hash(“A12345678Z", “HeanpyftAkWilfUd").encode('hex’)
->

我的问题是如何在Swift中做到这一点?使用什么库,如果可能的话-向我展示示例代码,这将导致哈希“A12345678Z”精确到:

25fac84a1cc3a8f6706848d1016cfe7e9d3631691306dcacae68c11c7b54f0bf89e7a7fc51f7fcc19671775acb21c8d928c4c96bb66d915925de58b8b36ab251
你可以用。这是一个快速的界面

这里有一个来自README.md的示例

let sodium = Sodium()!
let password = "Correct Horse Battery Staple".toData()!
let hashedStr = sodium.pwHash.scrypt.str(password,
opsLimit: sodium.pwHash.scrypt.OpsLimitInteractive,
memLimit: sodium.pwHash.scrypt.MemLimitInteractive)!

if sodium.pwHash.scrypt.strVerify(hashStr, passwd: password) == false {
   // Password doesn't match the given hash string
}

好吧,但我不能达到他们的效果。如果我用你的例子,我会得到一个不同的十六进制值。如果有可能达到完全相同的结果,有什么想法吗?
let sodium = Sodium()!
let password = "Correct Horse Battery Staple".toData()!
let hashedStr = sodium.pwHash.scrypt.str(password,
opsLimit: sodium.pwHash.scrypt.OpsLimitInteractive,
memLimit: sodium.pwHash.scrypt.MemLimitInteractive)!

if sodium.pwHash.scrypt.strVerify(hashStr, passwd: password) == false {
   // Password doesn't match the given hash string
}