如何在 swift 中将 SHA256 与盐(某些键)一起使用

kim*_*pro 4 sha256 commoncrypto swift

我发现我们可以用 CommonCrypto 哈希一些字符串。我看到了一些例子,但他们不使用盐。如何将 SHA256 与盐一起使用?

sun*_*nce 5

Swift 4 的完整解决方案:

extension Data {

    var hexString: String {
        return map { String(format: "%02hhx", $0) }.joined()
    }

    var sha256: Data {
        var digest = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
        self.withUnsafeBytes({
            _ = CC_SHA256($0, CC_LONG(self.count), &digest)
        })
        return Data(bytes: digest)
    }

}

extension String {

    func sha256(salt: String) -> Data {
        return (self + salt).data(using: .utf8)!.sha256
    }

}
Run Code Online (Sandbox Code Playgroud)

例子:

let hash = "test".sha256(salt: "salt").hexString
Run Code Online (Sandbox Code Playgroud)