O que é CryptoKit e para que serve?
\n\nCryptoKit é um framework para operações criptográficas, desenvolvido pela Apple e integrado diretamente no ecossistema Swift. Ele está disponível a partir do iOS 13, macOS 10.15, watchOS 6 e tvOS 13. Ao contrário de bibliotecas de terceiros, o CryptoKit é uma solução nativa, o que garante alto desempenho, segurança e integração total com o sistema de gerenciamento de chaves Secure Enclave.
\n\nPara que serve o CryptoKit? No desenvolvimento moderno de aplicativos, a segurança dos dados está em primeiro plano. O CryptoKit fornece aos desenvolvedores uma interface simples, mas poderosa, para:
\n- \n
- Hash de dados (SHA-256, SHA-384, SHA-512) \n
- Criptografia simétrica (AES-GCM, ChaCha20-Poly1305) \n
- Criptografia assimétrica (Curve25519, P-256, P-384, P-521) \n
- Assinaturas digitais (EdDSA, ECDSA) \n
- Geração de números aleatórios criptograficamente seguros \n
- Troca de chaves (Diffie-Hellman em curvas elípticas) \n
A biblioteca foi projetada para minimizar erros do desenvolvedor: ela usa implementações seguras por padrão, gerencia automaticamente a memória e não permite o uso de algoritmos obsoletos ou inseguros (por exemplo, MD5 ou SHA-1 para assinaturas).
\n\nInstalação do CryptoKit
\n\nComo o CryptoKit faz parte da biblioteca padrão da Apple, não é necessária instalação através de gerenciadores de pacotes (CocoaPods, Swift Package Manager ou Carthage). Tudo o que você precisa é de um projeto com o deployment target mínimo iOS 13+ ou macOS 10.15+.
\n\nImportante: Se você estiver desenvolvendo para versões mais antigas do sistema operacional, o CryptoKit não estará disponível. Nesse caso, use CommonCrypto (nível C) ou bibliotecas de terceiros (por exemplo, CryptoSwift).
\n\nPara verificar a disponibilidade do CryptoKit no código, use:
\nimport CryptoKit\n\nif #available(iOS 13.0, macOS 10.15, *) {\n // Seu código com CryptoKit\n} else {\n // Fallback para CommonCrypto\n}\n\nInício rápido com exemplo de código
\n\nVamos considerar um exemplo simples: hash de uma string e criptografia simétrica.
\n\nimport CryptoKit\nimport Foundation\n\n// 1. Hash\nlet inputString = "Hello, CryptoKit!"\nlet inputData = Data(inputString.utf8)\nlet hash = SHA256.hash(data: inputData)\nprint("Hash SHA256: \\(hash.compactMap { String(format: "%02x", $0) }.joined())")\n\n// 2. Criptografia simétrica (AES-GCM)\nlet key = SymmetricKey(size: .bits256) // Geração de chave de 256 bits\nlet plaintext = "Mensagem secreta".data(using: .utf8)!\n\ndo {\n let sealedBox = try AES.GCM.seal(plaintext, using: key)\n print("Dados criptografados: \\(sealedBox.ciphertext.base64EncodedString())")\n \n // Descriptografia\n let openedBox = try AES.GCM.open(sealedBox, using: key)\n let decryptedString = String(data: openedBox, encoding: .utf8)!\n print("Mensagem descriptografada: \\(decryptedString)")\n} catch {\n print("Erro de criptografia: \\(error)")\n}\n\nPrincipais métodos e funções do CryptoKit
\n\nAbaixo estão 10 funções principais do CryptoKit com descrição detalhada, parâmetros e exemplos.
\n\n1. SHA256.hash(data:)
\nDescrição: Calcula o hash SHA-256 dos dados fornecidos. Retorna um objeto SHA256Digest.
Parâmetros:
\n- \n
data: Data— dados de entrada para hash. \n
Exemplo:
\nlet data = "Dados de exemplo".data(using: .utf8)!\nlet digest = SHA256.hash(data: data)\nprint(digest.description) // Saída: SHA256 digest: 8f4343... (64 caracteres)\n\n2. SHA384.hash(data:)
\nDescrição: Semelhante ao SHA256, mas usa um digest de 384 bits. Mais seguro, porém mais lento.
\nParâmetros: os mesmos, c