Swift 绑定 libscrypt
在你的 Package.swift
文件中
dependencies: [
.package(name: "Scrypt", url: "https://github.com/greymass/swift-scrypt.git", from: "1.0.0"),
]
import Scrypt
let password = Array("hunter1".utf8)
let salt = Array("mysalt".utf8)
let hash = try! scrypt(password: password, salt: salt, length: 10)
print(hash) // [28, 254, 41, 21, 206, 165, 250, 244, 16, 109]
public func scrypt(password: [UInt8], salt: [UInt8], length: Int = 64,
N: UInt64 = 16384, r: UInt32 = 8, p: UInt32 = 1) throws -> [UInt8]
计算给定参数的 scrypt 哈希值。
名称 | 描述 |
---|---|
password | 密码字节。 |
salt | 盐值字节。 |
length | 期望的哈希长度。 |
N | 难度系数,必须是 2 的幂。 |
r | 顺序读取大小。 |
p | 可并行迭代的次数。 |
对应于给定 length
的密码哈希值。
public enum ScryptError: Error
scrypt
可能抛出的所有错误。
case invalidLength
如果长度不在 1 和 (2^32 - 1) * 32 之间,则抛出此错误。
case invalidParameters
如果 N、r、p 中有任何一个是 0,或者 N 不是 2 的幂,则抛出此错误。
case emptyPassword
如果给定的密码为空,则抛出此错误。
case emptySalt
如果给定的盐值为空,则抛出此错误。
case unknownError(code: Int32)
如果 libscrypt 返回意外的响应代码,则抛出此错误。