sgcCrypto es una nueva biblioteca de criptografía de propósito general para Delphi y C++ Builder: 43 unidades en Object Pascal puro que cubren cifrado simétrico, hashing, firmas digitales, PKI e intercambio de claves post-cuántico. No hay componentes de tiempo de diseño, ni clases Tsgc*, ni nada que arrastrar a un formulario. Se añade una unidad a la cláusula uses y se llama a una función, igual que se llamaría a una rutina de la RTL.
sgcCrypto se incluye gratis con sgcWebSockets Standard, Professional y Enterprise, así que si ya tiene alguna de esas licencias, o All-Access, ya la tiene, sin nada nuevo que instalar ni pedir. También se vende como paquete independiente, con el runtime de sgcWebSockets Core incluido, para los clientes que solo tienen Core o ninguna licencia de sgcWebSockets.
Cómo Funciona
Cada unidad exporta funciones y procedimientos sencillos que reciben TBytes y devuelven TBytes. No hay ningún objeto de contexto que reservar, ninguna interfaz que implementar ni ningún sgcCrypto_Reg.pas, porque no hay nada que registrar. El código fuente completo en Pascal se incluye con cada licencia, de modo que una primitiva se puede recorrer paso a paso en su propio depurador en lugar de desaparecer dentro de una DLL o un binding de OpenSSL.
Nada en la biblioteca depende de una biblioteca externa. Cada algoritmo, desde AES hasta los esquemas de firma post-cuánticos, está implementado directamente en la unidad que lo expone, y el mismo código fuente compila sin cambios desde Delphi 7 hasta RAD Studio 13, para Win32, Win64, Linux64, macOS, iOS y Android.
uses
sgcCrypto_Random, sgcCrypto_AES, sgcCrypto_Keccak, sgcCrypto_Ed25519,
sgcCrypto_MLKEM;
var
vKey, vIV, vPlain, vAAD, vTag, vCipher: TBytes;
vDigest, vSeed, vSignature, vMessage: TBytes;
vPublicKey, vPrivateKey, vSharedSecret, vCiphertext: TBytes;
begin
// AES-256-GCM: authenticated encryption in one call
vKey := sgcRandomBytes(32);
vIV := sgcRandomBytes(12);
vPlain := TEncoding.UTF8.GetBytes('confidential payload');
vCipher := sgcAES_GCM_Encrypt(vKey, vIV, vPlain, vAAD, vTag);
// SHA-3-256, one call, no context object to manage
vDigest := sgcSHA3_256(vPlain);
// Ed25519: sign a message
vSeed := sgcRandomBytes(32);
vMessage := TEncoding.UTF8.GetBytes('sign me');
vSignature := sgcEd25519_Sign(vSeed, vMessage);
// ML-KEM-768: post-quantum key encapsulation (FIPS 203)
sgcMLKEM_GenerateKeyPair(mlkem768, vPublicKey, vPrivateKey);
sgcMLKEM_Encapsulate(mlkem768, vPublicKey, vCiphertext, vSharedSecret);
end;
Cifrado Simétrico y AEAD
sgcCrypto_AES cubre CBC, GCM y CTR. sgcCrypto_Modes añade ECB, OFB, CFB, CTS con robo de texto cifrado, y AES Key Wrap y Key Wrap with Padding (RFC 3394 y RFC 5649), y sgcCrypto_CMAC es AES-CMAC. sgcCrypto_ChaCha implementa ChaCha20, XChaCha20, Salsa20 y XSalsa20, y sgcCrypto_Poly1305 combina Poly1305 con ellos en los cifrados AEAD ChaCha20-Poly1305 y XChaCha20-Poly1305 de RFC 8439. Cada etiqueta de autenticación, ya sea de GCM o de Poly1305, se compara en tiempo constante, de modo que una verificación fallida nunca revela lo cerca que estaba el intento.
Hashing, Derivación de Claves y MACs
sgcCrypto_SHA2 y sgcCrypto_Keccak cubren SHA-1/2, SHA-3, SHAKE, cSHAKE y KMAC, y sgcCrypto_Blake2b/Blake2s añaden BLAKE2. sgcCrypto_HMAC es autenticación de mensajes con clave. Para convertir una contraseña en una clave están sgcCrypto_KDF (PBKDF2), sgcCrypto_HKDF, sgcCrypto_Scrypt y sgcCrypto_Argon2, que implementa las tres variantes de Argon2, d, i e id, la ganadora de la Password Hashing Competition. sgcCrypto_SipHash ofrece un hash rápido con clave para claves de tablas hash, y sgcCrypto_TLSH es un hash de similitud difusa, útil para detección de casi duplicados más que como resumen criptográfico.
Firmas, Intercambio de Claves y PKI
sgcCrypto_Ed25519 y sgcCrypto_Ed448 firman y verifican, y sgcCrypto_X25519 y sgcCrypto_X448 realizan el intercambio de claves Diffie-Hellman correspondiente. sgcCrypto_ECCurves añade ECDSA y ECDH sobre secp256k1 y las tres curvas Brainpool con nonces deterministas RFC 6979, y sgcCrypto_RSA_Keys cubre la generación de claves RSA de cualquier longitud en bits, cifrado OAEP y firmas PSS.
En el lado de PKI, sgcCrypto_X509 analiza un certificado, verifica que fue firmado por un emisor dado, recorre y verifica una cadena, y comprueba una CRL para revocación. sgcCrypto_X509_Gen genera desde cero un certificado X.509 autofirmado o un CSR PKCS#10, incluyendo nombres alternativos del sujeto, uso de clave y restricciones de longitud de ruta de CA, sobre un escritor DER construido exactamente para eso.
Criptografía Post-Cuántica
sgcCrypto también implementa los tres estándares post-cuánticos del NIST. sgcCrypto_MLKEM es encapsulación de claves FIPS 203 en los tres conjuntos de parámetros, ML-KEM-512, 768 y 1024, con rechazo implícito ante un texto cifrado malformado, de modo que una entrada incorrecta nunca revela información. sgcCrypto_MLDSA es firma FIPS 204, ML-DSA-44/65/87, y sgcCrypto_SLHDSA es FIPS 205 en los seis conjuntos de parámetros SHAKE. Como una suposición basada en retículos es más joven que las curvas elípticas, sgcCrypto_MLKEM_Hybrid combina un secreto X25519 con un secreto ML-KEM en una única clave compartida, el patrón de migración híbrido hacia el que converge la industria.
Disponibilidad
sgcCrypto se incluye gratis con sgcWebSockets Standard, Professional y Enterprise, y con All-Access. Si ya tiene alguna de esas licencias, las 43 unidades ya están en su instalador, sin necesidad de pedido aparte. Si solo tiene sgcWebSockets Core, o ninguna licencia de sgcWebSockets, sgcCrypto también se vende como paquete independiente con el runtime de Core incluido. Cada licencia, ya sea incluida o independiente, incluye el código fuente completo en Pascal y un año de actualizaciones.
Puede consultar la referencia completa de unidades y probarlo usted mismo en la página del producto sgcCrypto.
¿Preguntas o comentarios? Contáctenos, recibirá respuesta de las personas que escribieron el código.
