【问题标题】:Native HMAC SHA512 support for Swift 3.1对 Swift 3.1 的原生 HMAC SHA512 支持
【发布时间】:2018-01-28 03:18:50
【问题描述】:

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

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

swift 3.1 原生不支持HMACSHA512 吗?

对不起,如果这是一个愚蠢的问题,我对 swift 比较陌生。

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

谢谢。

【问题讨论】:

    标签: swift sha hmac


    【解决方案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,您确实需要使用外部框架进行加密。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2019-01-05
      相关资源
      最近更新 更多