Получите хэшированное значение от HMAC SHA256 в Swift
Я пытался найти собственное хеширование для HMAC с SHA256, для сообщения с определенными значениями, и вот оно:
extension String {
func hmac(algorithm: CryptoAlgorithm, key: String) -> String {
let str = self.cString(using: String.Encoding.utf8)
let strLen = Int(self.lengthOfBytes(using: String.Encoding.utf8))
let digestLen = Int(CC_SHA256_DIGEST_LENGTH)
let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)
let keyStr = key.cString(using: String.Encoding.utf8)
let keyLen = Int(key.lengthOfBytes(using: String.Encoding.utf8))
CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA256), keyStr!, keyLen, str!, strLen, result)
let digest = stringFromResult(result: result, length: digestLen)
result.deallocate(capacity: digestLen)
return digest
}
private func stringFromResult(result: UnsafeMutablePointer<CUnsignedChar>, length: Int) -> String {
let hash = NSMutableString()
for i in 0..<length {
hash.appendFormat("%02x", result[i])
}
return String(hash)
}
}
Теперь, глядя на эту ситуацию, я делаю хэширование, но как я могу сделать обратную функцию, чтобы получить хэшированное значение с использованием секретного ключа? Я не хочу использовать какую-либо внешнюю библиотеку
#import <CommonCrypto/CommonHMAC.h>
,