swift-scrypt

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]

scrypt(password:salt:length:N:r:p:)

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 的密码哈希值。

抛出 ScryptError 错误

public enum ScryptError: Error

scrypt 可能抛出的所有错误。

invalidLength

case invalidLength

如果长度不在 1 和 (2^32 - 1) * 32 之间,则抛出此错误。

invalidParameters

case invalidParameters

如果 N、r、p 中有任何一个是 0,或者 N 不是 2 的幂,则抛出此错误。

emptyPassword

case emptyPassword

如果给定的密码为空,则抛出此错误。

emptySalt

case emptySalt

如果给定的盐值为空,则抛出此错误。

unknownError(code:)

case unknownError(code: Int32)

如果 libscrypt 返回意外的响应代码,则抛出此错误。