我发现我们可以使用CommonCrypto散列一些字符串。 我看到一些例子,但他们不使用盐。 我如何将SHA256与盐一起使用?
答案 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