CryptoKit para Swift: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es CryptoKit y para qué sirve?

\n\n

CryptoKit es un framework para operaciones criptográficas, desarrollado por Apple e integrado directamente en el ecosistema Swift. Está disponible desde iOS 13, macOS 10.15, watchOS 6 y tvOS 13. A diferencia de las bibliotecas de terceros, CryptoKit es una solución nativa, lo que garantiza alto rendimiento, seguridad e integración total con el sistema de gestión de claves Secure Enclave.

\n\n

¿Para qué sirve CryptoKit? En el desarrollo moderno de aplicaciones, la seguridad de los datos es primordial. CryptoKit proporciona a los desarrolladores una interfaz simple pero potente para:

\n
    \n
  • Hash de datos (SHA-256, SHA-384, SHA-512)
  • \n
  • Cifrado simétrico (AES-GCM, ChaCha20-Poly1305)
  • \n
  • Cifrado asimétrico (Curve25519, P-256, P-384, P-521)
  • \n
  • Firmas digitales (EdDSA, ECDSA)
  • \n
  • Generación de números aleatorios criptográficamente seguros
  • \n
  • Intercambio de claves (Diffie-Hellman sobre curvas elípticas)
  • \n
\n\n

La biblioteca está diseñada para minimizar errores del desarrollador: utiliza implementaciones seguras por defecto, gestiona la memoria automáticamente y no permite el uso de algoritmos obsoletos o inseguros (por ejemplo, MD5 o SHA-1 para firmas).

\n\n

Instalación de CryptoKit

\n\n

Dado que CryptoKit es parte de la biblioteca estándar de Apple, no se requiere instalación a través de gestores de paquetes (CocoaPods, Swift Package Manager o Carthage). Todo lo que necesitas es un proyecto con un objetivo de implementación mínimo de iOS 13+ o macOS 10.15+.

\n\n

Importante: Si desarrollas para versiones anteriores del sistema operativo, CryptoKit no está disponible. En ese caso, utiliza CommonCrypto (nivel C) o bibliotecas de terceros (por ejemplo, CryptoSwift).

\n\n

Para verificar la disponibilidad de CryptoKit en el código, utiliza:

\n
import CryptoKit\n\nif #available(iOS 13.0, macOS 10.15, *) {\n    // Tu código con CryptoKit\n} else {\n    // Recurso alternativo a CommonCrypto\n}
\n\n

Inicio rápido con un ejemplo de código

\n\n

Veamos un ejemplo simple: hash de una cadena y cifrado simétrico.

\n\n
import CryptoKit\nimport Foundation\n\n// 1. Hash\nlet inputString = "¡Hola, 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. Cifrado simétrico (AES-GCM)\nlet key = SymmetricKey(size: .bits256) // Generación de clave de 256 bits\nlet plaintext = "Mensaje secreto".data(using: .utf8)!\n\ndo {\n    let sealedBox = try AES.GCM.seal(plaintext, using: key)\n    print("Datos cifrados: \\(sealedBox.ciphertext.base64EncodedString())")\n    \n    // Descifrado\n    let openedBox = try AES.GCM.open(sealedBox, using: key)\n    let decryptedString = String(data: openedBox, encoding: .utf8)!\n    print("Mensaje descifrado: \\(decryptedString)")\n} catch {\n    print("Error de cifrado: \\(error)")\n}
\n\n

Métodos y funciones principales de CryptoKit

\n\n

A continuación se presentan 10 funciones clave de CryptoKit con descripción detallada, parámetros y ejemplos.

\n\n

1. SHA256.hash(data:)

\n

Descripción: Calcula el hash SHA-256 de los datos proporcionados. Devuelve un objeto SHA256Digest.

\n

Parámetros:

\n
    \n
  • data: Data — datos originales para el hash.
  • \n
\n

Ejemplo:

\n
let data = "Datos de ejemplo".data(using: .utf8)!\nlet digest = SHA256.hash(data: data)\nprint(digest.description) // Salida: SHA256 digest: 8f4343... (64 caracteres)
\n\n

2. SHA384.hash(data:)

\n

Descripción: Similar a SHA256, pero utiliza un resumen de 384 bits. Más seguro, pero más lento.

\n

Parámetros: los mismos que

Recommendations