你一定要使用CommonCrypto,因爲它已經在每個設備上都可用了,經過了很好的測試並且速度很快。你只需要添加含有
#import <CommonCrypto/CommonCrypto.h>
一個橋接報你可以看一下here如何添加橋接頭。
然後,您可以用一個簡單的擴展(SWIFT 4)計算的HMAC:
extension String {
func hmac(key: String) -> String {
var digest = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA256), key, key.count, self, self.count, &digest)
let data = Data(bytes: digest)
return data.map { String(format: "%02hhx", $0) }.joined()
}
}
例子:
let result = "test".hmac(key: "test")
結果:
88cd2108b5347d973cf39cdf9053d7dd42704876d8c9a9bd8e2d168259d3ddf7
當然這是可能的。這只是數學。查找算法並編寫它。 :) –
或將其從CryptoSwift中提取出來,其中包括Swift中的SHA-512,而在其下面沒有框架。 https://github.com/krzyzanowskim/CryptoSwift/blob/master/Sources/CryptoSwift/SHA2.swift –