本机HMAC SHA512支持Swift 3.1

问题描述 投票:1回答:1

我试图在将数据字符串发送到服务器之前对数据字符串实施HMAC SHA512加密,因为这是他们的要求。

我已经在网上找到了许多可能的解决方案,但是所有这些解决方案都需要包含一些模块或框架。

不是HMACSHA512本身不支持swift 3.1吗?

对不起,如果这是一个愚蠢的问题,我对swift相对较新。

如果它可用,我怎么能简单地使用hmac sha512加密一些数据?

谢谢。

swift sha hmac
1个回答
1
投票

CommonCrypto是在Apple设备上进行加密的本地方式。您不需要任何模块或框架,只需add a bridging header并导入CommonCrypto:

#import <CommonCrypto/CommonCrypto.h>

然后,您可以使用简单的扩展(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

如果您在非Apple设备上使用Swift,则确实需要使用外部框架进行加密。

© www.soinside.com 2019 - 2024. All rights reserved.