Swift HMAC关于CryptoKit的更新

Swift HMAC关于CryptoKit的更新,swift,apple-cryptokit,Swift,Apple Cryptokit,我是CryptoKit新手,我正在努力将这段代码从Node.js翻译成Swift(使用CryptoKit) 我在Swift/CryptoKit上所做的是: var hmac = SHA256.hash(data: Data(base64Encoded: key)!) 但我不知道如何处理第二行。在Ruby上,它可以通过以下方式完成: HMAC.digest('sha256', secret, what) 但是CryptoKit“没有”这种方法,有什么想法吗?有了使用CryptoKit的Swi

我是CryptoKit新手,我正在努力将这段代码从Node.js翻译成Swift(使用CryptoKit)

我在Swift/CryptoKit上所做的是:

 var hmac = SHA256.hash(data: Data(base64Encoded: key)!)
但我不知道如何处理第二行。在Ruby上,它可以通过以下方式完成:

HMAC.digest('sha256', secret, what)

但是CryptoKit“没有”这种方法,有什么想法吗?

有了使用CryptoKit的Swift,您可以写以下内容:

// create the prehash string by concatenating required parts
guard let what: Data = (timestampString + methodString + requestPathString + bodyString).data(using: .utf8) else {
    fatalError(...)
}
guard let key: Data = Data(base64Encoded: secret) else {
    fatalError(...)
}
let authenticationCode = HMAC<SHA256>.authenticationCode(for: what, using: key)
并作为base64编码字符串:

let authenticationCodeBase64String = authenticationCodeData.base64EncodedString()

网络上有许多来自苹果和其他公司的教程。

我的问题是“key”是由我的API提供商()提供的,而“what”是发送的消息。从您的示例中,我不会使用API提供的“key”。根据您提供的文档,您需要使用base64解码的
secret
作为生成HMAC的“key”。我将根据文档更新我的答案。不要将变量
key
与提供者提供的“key”混淆,该变量是base64解码的
secret
!否则,请遵循文档-这非常好。耶!Coinbase上的文档非常好,我对CryptoKit的理解是另一回事。。。除息的
let authenticationCodeData = Data(authenticationCode)
let authenticationCodeBase64String = authenticationCodeData.base64EncodedString()