在swift 3.1中获得HMAC SHA512的最小方法

时间:2017-06-07 00:35:42

标签: swift xcode

我正在使用xcode和swift 3.1

对应用进行编码

我需要为我对服务器的api调用创建hmac sha512哈希。

我知道有像CryptoSwift这样的各种框架为我们提供了这样的功能。

但是我很想知道如果没有使用任何库或框架,它是否可以在原生xcode / swift 3.1中使用。

如果没有那么为什么不呢?

另外,如果我确实需要使用该库,那么仅提供基于hmac sha512的库代码的最小方法是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

你绝对应该使用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