如何在swift中使用SHA256和salt(某些键)

时间:2016-07-25 04:31:22

标签: swift sha256 commoncrypto

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

2 个答案:

答案 0 :(得分:2)

将您的indata与盐组合并运行哈希计算;

func hash(input: String, salt: String) -> String {
    let toHash = input + salt

    // TODO: Calculate the SHA256 hash of "toHash" and return it
    // return sha256(toHash)

    // Return the input data and hash for now
    return toHash
}

print(hash("somedata", salt: "1m8f")) // Prints "somedata1m8f"

答案 1 :(得分:1)

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
    }

}

示例:

let hash = "test".sha256(salt: "salt").hexString