我正在使用 xcode 和 swift 3.1
编写应用程序
我需要为服务器的 api 调用创建 hmac sha512
哈希值。
我知道有各种框架(例如 CryptoSwift
)为我们提供了此类功能。
但是我有兴趣知道是否可以在 native xcode/swift 3.1
中不使用任何库或框架。
如果没有那么为什么不呢?
此外,如果我确实需要使用该库,仅获取基于 hmac sha512
的库代码的最小方法是什么?
谢谢。
最佳答案
您绝对应该使用 CommonCrypto,因为它已经在所有设备上可用,经过充分测试且速度很快。您只需要添加一个桥接 header ,其中包含
#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
关于swift - 在 swift 3.1 中获取 HMAC SHA512 的最小方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44401731/