使用CCHmac()

时间:2015-04-22 13:38:47

标签: ios swift

在SDK8.3之前我用这种方式生成了我的hmac。现在我在CCHmac()函数上出错了。由于我是初学者,我无法弄清楚如何修复它。在此先感谢您的帮助!

   xcode警告:不能埋没' CCHmac'使用类型的参数列表(UInt32,[CChar] ?, UInt,[CChar] ?, UInt,inout [(CUnsignedChar)]

func generateHMAC(key: String, data: String) -> String {

    let cKey = key.cStringUsingEncoding(NSUTF8StringEncoding)
    let cData = data.cStringUsingEncoding(NSUTF8StringEncoding)

    var result = [CUnsignedChar](count: Int(CC_SHA512_DIGEST_LENGTH), repeatedValue: 0)
    CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA512), cKey, strlen(cKey!), cData, strlen(cData!), &result)


    let hash = NSMutableString()
    for var i = 0; i < result.count; i++ {
        hash.appendFormat("%02hhx", result[i])
    }

    return hash as String
}

1 个答案:

答案 0 :(得分:5)

问题在于toolset "arm_gcc" 返回strlen,而UInt的长度参数为CCHmac s。

虽然你可以做一些强制,但你也可以使用两个数组的Int属性,而不是调用count

strlen