我有一个字符串和一个密钥,想要从中生成HMAC SHA256。虽然我使用了两个库:IDZSwiftCommonCrypto 和 CryptoSwift,还有这个答案。但是实际上都没有起作用。我的参考来源是这两个网站:https://myeasywww.appspot.com/utility/free/online/Crypt_Decrypt-MD5-AES-HMAC-SHA-DES-RABBIT/en?command=UTILITY&ID=2 和 https://www.freeformatter.com/hmac-generator.html#ad-output,它们总是能为我的情况生成正确的哈希密钥。是否有任何想法可以解决这个问题?有一些代码示例。
对于IDZSwiftCommonCrypto:
对于IDZSwiftCommonCrypto:
func getHMacSHA256(forMessage message: String, key: String) -> String? {
let hMacVal = HMAC(algorithm: HMAC.Algorithm.sha256, key: key).update(string: message)?.final()
if let encryptedData = hMacVal {
let decData = NSData(bytes: encryptedData, length: Int(encryptedData.count))
let base64String = decData.base64EncodedString(options: .lineLength64Characters)
print("base64String: \(base64String)")
return base64String
} else {
return nil
}
}
对于CryptoSwift
let password: Array<UInt8> = Array(payload.utf8)
let salt: Array<UInt8> = Array("somekey".utf8)
let signedBody = try? HKDF(password: password, salt: salt, variant: .sha256).calculate()
但没有什么比真相来源更有效。有什么想法吗?
import CommonCrypto
即可。 - Wei Lu