Получите хэшированное значение от 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>,

0 ответов

Другие вопросы по тегам