CryptoKit para Swift: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é CryptoKit e para que serve?

\n\n

CryptoKit é 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\n

Para 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
\n\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\n

Instalação do CryptoKit

\n\n

Como 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\n

Importante: 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\n

Para verificar a disponibilidade do CryptoKit no código, use:

\n
import CryptoKit\n\nif #available(iOS 13.0, macOS 10.15, *) {\n    // Seu código com CryptoKit\n} else {\n    // Fallback para CommonCrypto\n}
\n\n

Início rápido com exemplo de código

\n\n

Vamos considerar um exemplo simples: hash de uma string e criptografia simétrica.

\n\n
import 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\n

Principais métodos e funções do CryptoKit

\n\n

Abaixo estão 10 funções principais do CryptoKit com descrição detalhada, parâmetros e exemplos.

\n\n

1. SHA256.hash(data:)

\n

Descrição: Calcula o hash SHA-256 dos dados fornecidos. Retorna um objeto SHA256Digest.

\n

Parâmetros:

\n
    \n
  • data: Data — dados de entrada para hash.
  • \n
\n

Exemplo:

\n
let data = "Dados de exemplo".data(using: .utf8)!\nlet digest = SHA256.hash(data: data)\nprint(digest.description) // Saída: SHA256 digest: 8f4343... (64 caracteres)
\n\n

2. SHA384.hash(data:)

\n

Descrição: Semelhante ao SHA256, mas usa um digest de 384 bits. Mais seguro, porém mais lento.

\n

Parâmetros: os mesmos, c

Recommendations