Incluído a partir do sgcWebSockets StandardTambém vendido separadamente
sgcCrypto — uma Biblioteca de Criptografia Moderna para Delphi & C++ Builder
43 unidades Object Pascal puras, sem componentes, sem pegada em tempo de design: passe TBytes, receba TBytes de volta. AES-GCM e ChaCha20-Poly1305 para criptografia, SHA-3/BLAKE2/Argon2 para hash, Ed25519/X25519/RSA para assinaturas e troca de chaves, análise e geração de certificados X.509, e os padrões pós-quânticos ML-KEM, ML-DSA e SLH-DSA, cujas chaves e certificados vão para os mesmos arquivos X.509, PKCS#8 e PEM que todo o resto. O pacote também traz um mecanismo TLS 1.3 e TLS 1.2 escrito no mesmo Object Pascal, selecionado com iohNativeTLS, com troca de chaves híbrida X25519MLKEM768 ativada por padrão. Cada primitiva é implementada diretamente na unidade que você adiciona à sua cláusula uses: sem DLL externa, sem vinculação com OpenSSL, e o mesmo código-fonte compila sem alterações do Delphi 7 até o RAD Studio 13. O sgcCrypto vem gratuito com o sgcWebSockets Standard, Professional e Enterprise, e também é vendido separadamente (com o runtime sgcWebSockets Core embutido) para clientes que possuem apenas o Core.
43 funções purassgcCrypto_*.pasSem componentes. Chame uma função, receba bytes de volta.
AES-GCMsgcAES_GCM_Encrypt
ChaCha20-Poly1305sgcChaCha20Poly1305_Encrypt
SHA-3 / SHAKEsgcSHA3_256
Ed25519 / X25519sgcEd25519_Sign
RSA-PSSsgcRSA_PSS_Sign
ML-KEM / ML-DSAsgcMLKEM_Encapsulate
X.509 / CSRsgcX509_CreateSelfSigned
VEJA FUNCIONANDO
Veja o sgcCrypto em dois minutos
Criptografia moderna para Delphi: AES-GCM, SHA-3, Ed25519, X.509 e ML-KEM pós-quântico, sem precisar distribuir DLLs do OpenSSL.
43Unidades de funções purassgcCrypto_*.pas, zero componentes
6Famílias de capacidadesSimétrica, hash, assinaturas, PKI, PQC, OTP
6Plataformas de destinoWin32, Win64, Linux64, macOS, iOS, Android
3Padrões FIPS pós-quânticosML-KEM (203), ML-DSA (204), SLH-DSA (205)
2Formas de obtê-loIncluído em uma edição, ou separado
ANTES DE COMPRAR
Três Coisas Que Vale a Pena Saber Antes
O que é o sgcCrypto, se você já o possui, e onde ele roda. As três respostas são curtas.
O sgcCrypto é funções puras, não componentes
Cada uma das 43 unidades exporta funções e procedimentos comuns. Não há classe Tsgc*, nada é registrado com RegisterComponents, e não existe um sgcCrypto_Reg.pas. Você chama sgcAES_GCM_Encrypt(aKey, aIV, aPlain, aAAD, aTag) da mesma forma que chamaria qualquer função da RTL, a partir de um formulário, um serviço, uma aplicação console ou uma thread.
O código-fonte completo acompanha toda licença, então as primitivas são depuradas passo a passo no seu próprio debugger, em vez de desaparecer dentro de um binário ou de uma DLL.
Sobreposição de edição
Já possui uma edição do sgcWebSockets?
O sgcCrypto vem incluído no sgcWebSockets Standard, Professional e Enterprise, e também no All-Access, sem custo adicional. Se você já possui uma licença de qualquer edição a partir da Standard, já tem as 43 unidades, nada mais para comprar.
O sgcCrypto existe separadamente para o caso oposto: você possui apenas o sgcWebSockets Core, ou nenhuma licença do sgcWebSockets, e quer as unidades de criptografia sem licenciar uma edição completa.
Abrangência de plataforma
O sgcCrypto não tem nenhuma restrição de plataforma
Diferente dos pacotes de IA ou de voz, nada no sgcVer.inc restringe o sgcCrypto ao Windows. As unidades são aritmética Object Pascal comum, portanto compilam para Win32, Win64, Linux64, macOS, iOS e Android a partir do mesmo código-fonte.
A única unidade sensível à plataforma, sgcCrypto_Random, seleciona um backend CSPRNG conforme o alvo (BCryptGenRandom no Windows, ou /dev/urandom nos demais) por trás da mesma chamada sgcRandomBytes, então o seu código nunca precisa ramificar por plataforma.
O QUE VEM NA CAIXA
43 Unidades, Seis Famílias de Capacidades
Cada unidade é Object Pascal compilado, chamável a partir de qualquer projeto Delphi 7 a 13 ou C++ Builder. Não há DLL externa, nenhuma vinculação com OpenSSL e nenhum gerador de código: as primitivas são implementadas diretamente na unidade que você adiciona à sua cláusula uses.
Simétrica5 unidades
AES, ChaCha20 e as construções AEAD sobre eles
sgcCrypto_AES cobre CBC, GCM e CTR; sgcCrypto_Modes acrescenta ECB, OFB, CFB, ciphertext-stealing CTS, AES-CCM, e AES Key Wrap / Key Wrap with Padding (RFC 3394 / 5649); sgcCrypto_CMAC é AES-CMAC e AES-GMAC. sgcCrypto_ChaCha implementa ChaCha20, XChaCha20, Salsa20 e XSalsa20, e sgcCrypto_Poly1305 combina Poly1305 com eles nas cifras AEAD ChaCha20-Poly1305 e XChaCha20-Poly1305 da RFC 8439. O AES-CCM é a AEAD que Zigbee, Bluetooth e as suítes TLS CCM utilizam, já que não precisa de nada além da própria cifra de bloco, e o CBC e o ECB aceitam o esquema de padding de sua escolha, PKCS#7, ANSI X9.23, ISO 7816-4 e os demais, para o dia em que for preciso ler o que outro sistema escreveu. sgcAES_GCM_Decrypt e os verificadores de Poly1305 comparam a tag de autenticação em tempo constante e se recusam a devolver o texto plano quando a verificação falha.
sgcCrypto_SHA2 e sgcCrypto_Keccak cobrem SHA-1/2, SHA-3, SHAKE, cSHAKE e KMAC; sgcCrypto_Blake2b e sgcCrypto_Blake2s acrescentam BLAKE2. sgcCrypto_HMAC é autenticação de mensagem com chave. Para transformar uma senha em uma chave: sgcCrypto_KDF (PBKDF2), sgcCrypto_HKDF, sgcCrypto_Scrypt e sgcCrypto_Argon2, que implementa as três variantes do Argon2, d, i e id, a vencedora da Password Hashing Competition. sgcCrypto_SipHash oferece um hash rápido com chave para chaves de tabela hash, e sgcCrypto_TLSH é um hash difuso com uma função de distância de similaridade, não um digest criptográfico, útil para detecção de quase-duplicatas.
Ed25519/Ed448, X25519/X448, secp256k1, Brainpool e RSA
sgcCrypto_Ed25519/Ed448 assinam e verificam; sgcCrypto_X25519/X448 fazem o Diffie-Hellman correspondente. sgcCrypto_ECCurves acrescenta ECDSA e ECDH sobre sete curvas, secp256k1, as três curvas Brainpool e NIST P-256/P-384/P-521, com nonces determinísticos RFC 6979 e assinaturas na forma bruta ou em DER, além de assinatura Schnorr BIP-340, com as chaves públicas x-only que Taproot, Nostr e Lightning esperam. sgcCrypto_EC é a irmã voltada para JOSE: assina e verifica um JWS diretamente, ES256/384/512. sgcCrypto_RSA verifica assinaturas PKCS#1 v1.5 e PSS diretamente a partir de uma chave PEM, e sgcCrypto_RSA_Keys vai além, com geração de chaves em qualquer comprimento de bits, criptografia OAEP e PKCS#1 v1.5, e exportação DER/PEM tanto na forma PKCS#1 quanto na forma PKCS#8 BEGIN PRIVATE KEY. Chaves RSA e EC são importadas com a mesma facilidade com que são exportadas, em DER ou PEM, de modo que uma chave gerada uma vez pode ser salva e carregada novamente em vez de existir apenas enquanto o processo estiver ativo. sgcCrypto_ECIES completa o conjunto com criptografia híbrida seal/open para uma chave pública X25519.
sgcCrypto_ASN1 lê DER e PEM e analisa chaves PKCS#1/SEC 1; sgcCrypto_DER escreve toda tag que um certificado ou CSR precisa. sgcCrypto_X509 analisa um certificado, verifica se foi assinado por um emissor determinado, percorre e verifica uma cadeia, verifica um CSR, e analisa uma CRL para checar revogação. sgcCrypto_X509_Gen gera um certificado autoassinado ou um CSR PKCS#10 do zero, e uma CA emite com sgcX509_CreateSigned ou sgcX509_CreateSignedFromCSR: nome distinto completo de subject e issuer, janela de validade, flag de CA com restrição de comprimento de caminho, flags de uso de chave, OIDs de uso estendido de chave e nomes alternativos do subject, incluindo SANs de endereço IP, que agora aceitam IPv6 em qualquer forma textual da RFC 4291, e SANs de URI para identidades de serviço no estilo SPIFFE.
A assinatura não se limita mais a RSA e EC. sgcX509_MLDSAKey e sgcX509_SLHDSAKey envolvem uma chave pós-quântica para sgcX509_CreateSelfSignedEx e sgcX509_CreateCSREx, então um certificado ou um CSR pode ser assinado com ML-DSA ou SLH-DSA. Uma CA também pode certificar uma chave pública ML-KEM (RFC 9935), que não assina, de modo que a posse precisa ser comprovada de outra maneira. Do lado da leitura, TsgcX509PublicKeyType ganhou x509pkMLDSA, x509pkSLHDSA e x509pkMLKEM, e sgcX509_VerifyChain agora impõe o comprimento de caminho de basicConstraints e a extensão nameConstraints sobre dNSName, iPAddress, rfc822Name, uniformResourceIdentifier e directoryName, escrita no lado gerador a partir de PermittedDNSNames, ExcludedDNSNames, PermittedIPRanges e ExcludedIPRanges. Um certificado EC continua saindo com aproximadamente um terço do tamanho de um RSA e verifica muito mais rápido, motivo pelo qual novas implantações preferem essa opção.
ML-KEM, ML-DSA e SLH-DSA, mais um combinador híbrido
sgcCrypto_MLKEM é encapsulamento de chave FIPS 203, três conjuntos de parâmetros (ML-KEM-512/768/1024), com rejeição implícita em caso de ciphertext malformado. sgcCrypto_MLDSA é assinatura FIPS 204, ML-DSA-44/65/87. sgcCrypto_SLHDSA é FIPS 205, todos os seis conjuntos de parâmetros SHAKE: 128s, 128f, 192s, 192f, 256s, 256f. Como o ML-KEM sozinho aposta tudo em uma suposição de reticulado mais jovem que as curvas elípticas, sgcCrypto_MLKEM_Hybrid combina um segredo X25519 e um segredo ML-KEM em uma única chave compartilhada, de modo que o resultado nunca é mais fraco que a metade clássica, o padrão de migração para o qual o setor está convergindo.
A mesma unidade implementa o X-Wing (draft-connolly-cfrg-xwing-kem-10), X25519 com ML-KEM-768 como um único KEM: uma chave pública de 1216 bytes, uma chave privada de 32 bytes (a semente), um ciphertext de 1120 bytes e um segredo compartilhado de 32 bytes, através de sgcXWing_GenerateKeyPair, sgcXWing_Encapsulate e sgcXWing_Decapsulate. Ela também monta os key shares híbridos de TLS 1.3 da RFC 10024 para X25519MLKEM768, SecP256r1MLKEM768 e SecP384r1MLKEM1024 (codepoints IANA 0x11EC, 0x11EB e 0x11ED). Esses três não são KEMs autônomos, eles apenas montam um key share de TLS.
Os três algoritmos agora leem e escrevem chaves como X.509 SubjectPublicKeyInfo, PKCS#8 OneAsymmetricKey e PEM, então uma chave pós-quântica mora nos mesmos arquivos que uma chave RSA ou EC. As chaves privadas de ML-DSA e ML-KEM têm três formas, escolhidas com TsgcPQCPrivateKeyFormat: pqkfSeed escreve apenas a semente (32 bytes para ML-DSA, a semente d||z de 64 bytes para ML-KEM), pqkfExpanded escreve a chave expandida, pqkfBoth carrega as duas. O SLH-DSA tem uma única forma de chave privada. sgcMLDSA_GenerateKeyPairAndSeed e sgcMLKEM_GenerateKeyPairAndSeed devolvem a semente junto com o par de chaves, então um arquivo no formato de semente pode ser escrito logo após a geração.
Senhas de uso único, codificação e entradas ZIP criptografadas
sgcCrypto_OTP gera e verifica códigos HOTP e TOTP, os mesmos códigos de seis dígitos que um aplicativo autenticador exibe, com uma janela de verificação em tempo constante que absorve desvios de relógio. sgcCrypto_Encoding reúne as funções utilitárias que o restante da biblioteca compartilha: comparação em tempo constante, zeragem segura de buffer, hex, Base64url e Base32. sgcCrypto_Zip_AE2 implementa a criptografia WinZip AES, AE-1 e AE-2, para criptografar entradas individuais de um ZIP. sgcCrypto_Random é o CSPRNG multiplataforma por trás de toda chave e nonce gerados no restante da biblioteca, e sgcCrypto_Legacy mantém MD4/MD5/HMAC-MD5/DES-ECB disponíveis para interoperabilidade com formatos mais antigos, não para novos projetos.
Um Mecanismo TLS 1.3 e TLS 1.2 no Mesmo Object Pascal
O pacote também traz uma implementação de TLS 1.3 e TLS 1.2 escrita sobre as primitivas do sgcCrypto. Ela vive nas unidades sgcSSL_NativeTLS* e não em sgcCrypto_*, então não é uma das 43, e é entregue onde quer que o sgcCrypto seja entregue. Selecione-a com uma única propriedade em qualquer cliente ou servidor do sgcWebSockets e não há nada para implantar em nenhuma plataforma.
// Cliente: sem OpenSSL, sem SChannel, sem pilha TLS da plataforma
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohNativeTLS;
// Versão mínima permitida: tls1_2 negocia TLS 1.3 ou TLS 1.2, tls1_3 só TLS 1.3
WSClient.TLSOptions.Version := tls1_2;
WSClient.TLSOptions.RootCertFile := 'roots.pem';
// Optional: also trust the roots the operating system already trusts
WSClient.TLSOptions.NativeTLS_Options.UseSystemRoots := True;
// As duas listas são no estilo do OpenSSL, separadas por dois-pontos. Esta lista de grupos é o padrão.
WSClient.TLSOptions.NativeTLS_Options.Groups :=
'X25519MLKEM768:X25519:secp256r1:secp384r1';
// Somente suítes de TLS 1.3 aqui significa apenas TLS 1.3. Deixe vazio para o padrão,// que acrescenta as suítes ECDHE de TLS 1.2 com AES-GCM e ChaCha20-Poly1305.
WSClient.TLSOptions.NativeTLS_Options.CipherSuites :=
'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256';
// Servidor: a mesma chave em SSLOptions, mecanismos IOCP e EPOLL incluídos
WSServer.SSLOptions.IOHandler := iohNativeTLS;
Troca de chaves pós-quântica pronta de fábrica
A lista de grupos padrão começa com X25519MLKEM768, o híbrido de X25519 e ML-KEM-768 da RFC 10024, então um handshake com um par que o suporte já é pós-quântico sem nenhuma configuração. SecP256r1MLKEM768 e SecP384r1MLKEM1024 estão disponíveis na mesma lista.
Nada para implantar, em nenhum alvo
Sem libssl, sem libcrypto, sem SChannel e sem pilha TLS da plataforma, apenas o mesmo Object Pascal no Win32, Win64, Linux64, macOS, iOS e Android. Defina TLSOptions.IOHandler := iohNativeTLS em um cliente, ou SSLOptions.IOHandler := iohNativeTLS em um servidor, incluindo os mecanismos de servidor IOCP e EPOLL.
As raízes em que a máquina já confia
Defina NativeTLS_Options.UseSystemRoots como True e o mecanismo adiciona as raízes de confiança do sistema operacional a RootCertFile: o repositório ROOT no Windows, e em qualquer outra plataforma o primeiro arquivo de bundle de CA encontrado entre os locais padrão. Ele nunca lê o chaveiro do macOS ou do iOS nem o repositório do Android. Vem desativada por padrão, então as âncoras continuam sendo exatamente o que RootCertFile diz. Em um servidor, a mesma propriedade se aplica aos certificados de cliente que ele verifica.
Conheça os limites antes de trocar
O mecanismo fala apenas TLS 1.3 e TLS 1.2, sem TLS 1.1, TLS 1.0 ou SSL, e os grupos híbridos pós-quânticos existem apenas na TLS 1.3, então uma conexão TLS 1.2 usa X25519, secp256r1 ou secp384r1. Não há retomada de sessão nem PSK, nem 0-RTT, nem QUIC. A revogação e as políticas de certificado não são verificadas, e o evento de componente OnSSLVerifyPeer não está disponível para ele, o mecanismo tem seus próprios ganchos de verificação. Continue no OpenSSL ou em um backend da plataforma quando precisar de algum desses recursos.
INÍCIO RÁPIDO
Sem Componente, Sem Object Inspector
Adicione uma unidade ao uses e chame uma função. Cada chamada abaixo vem de uma unidade diferente das 43, abrangendo simétrica, hash, assinaturas e pós-quântica.
As verificações de tag, a verificação HOTP/TOTP e sgcConstantTimeEquals comparam em tempo constante, e o mesmo vale para o trabalho sobre o segredo. O AES roda em um núcleo bitsliced que nunca indexa a memória com um byte secreto nem faz desvios com base nele, o GHASH multiplica sob uma máscara, e as operações privadas do RSA são cegadas e verificadas contra o expoente público antes de qualquer coisa ser retornada. A assinatura ECDSA, o ECDH e a geração de chaves EC usam uma multiplicação escalar em tempo constante, e a assinatura Ed25519 lê o escalar em janelas fixas com uma fórmula de adição completa.
Rejeição implícita e entradas verificadas primeiro
Um ciphertext com o tamanho certo que não descriptografa produz um segredo pseudoaleatório em vez de um erro, a rejeição implícita do FIPS 203, então um atacante não aprende nada com ele. Uma chave pública malformada, um ciphertext ou uma chave de tamanho errado, e uma chave privada que falha na verificação do hash são recusados antes de qualquer cálculo, e uma chave privada ML-KEM, ML-DSA ou SLH-DSA importada tem sua consistência verificada, então uma chave cujas partes não pertencem umas às outras não pode ser carregada por engano.
Delphi 7 a 13, sem alterações
Nenhum tipo inteiro nativo de 64 bits é assumido. sgcCrypto_Int64 e TsgcBigInt emulam a aritmética de que os hashes, as curvas e as unidades pós-quânticas precisam, então o mesmo código-fonte compila em toda versão suportada.
Nada sai do seu processo
Cada função roda no próprio processo, sobre os dados que você passa. Não há chamada de rede, nenhuma telemetria e nenhum relé da eSeGeCe em nenhum lugar da biblioteca.
PREÇOS
Incluído, ou um Pacote Separado
O sgcCrypto vem gratuito com o sgcWebSockets Standard, Professional e Enterprise. Se você possui apenas o sgcWebSockets Core, ele também é vendido como pacote próprio, a partir de €149 para um único desenvolvedor. Todas as licenças incluem código-fonte completo, 1 ano de atualizações e um desconto de renovação de 50% a 70%: 50% ao renovar um pacote, 60% para dois, 70% para três ou mais.
sgcCrypto
€149
Pacote separado. Licenças Single, Team e Site disponíveis. Gratuito se você já possui o sgcWebSockets Standard, Professional ou Enterprise.
Todas as 43 unidades sgcCrypto_*.pas
Runtime sgcWebSockets Core incluído
Delphi & C++ Builder, nas seis plataformas
Código-fonte completo
1 ano de atualizações
Já está no sgcWebSockets Standard, Professional ou Enterprise? O sgcCrypto já está no seu instalador, nenhum pedido necessário.
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso
Criptografia Sem a Sobrecarga de Componentes
43 funções puras cobrindo criptografia, hash, assinaturas, PKI e troca de chaves pós-quântica, mais um mecanismo TLS 1.3 e TLS 1.2 construído sobre elas, prontas onde quer que o seu código Delphi ou C++ Builder já rode. Código-fonte completo, sem intermediário, sem DLL.