Inbegrepen vanaf sgcWebSockets StandardOok standalone verkrijgbaar
sgcCrypto — een moderne cryptografiebibliotheek voor Delphi & C++ Builder
43 pure Object Pascal-units, geen componenten, geen design-time footprint: geef TBytes mee, krijg TBytes terug. AES-GCM en ChaCha20-Poly1305 voor versleuteling, SHA-3/BLAKE2/Argon2 voor hashing, Ed25519/X25519/RSA voor handtekeningen en sleuteluitwisseling, X.509-certificaatparsing en -generatie, en post-quantum ML-KEM, ML-DSA en SLH-DSA, waarvan de sleutels en certificaten in dezelfde X.509-, PKCS#8- en PEM-bestanden terechtkomen als al het andere. Het pakket bevat ook een TLS 1.3- en TLS 1.2-engine in hetzelfde Object Pascal, te kiezen met iohNativeTLS, met X25519MLKEM768-hybride sleuteluitwisseling standaard aan. Elke primitief is rechtstreeks geïmplementeerd in de unit die je aan je uses-clausule toevoegt: geen externe DLL, geen OpenSSL-binding, en dezelfde broncode compileert ongewijzigd van Delphi 7 tot en met RAD Studio 13. sgcCrypto wordt gratis meegeleverd met sgcWebSockets Standard, Professional en Enterprise, en wordt ook standalone verkocht (met de sgcWebSockets Core runtime inbegrepen) voor klanten die alleen Core bezitten.
2Manieren om het te bezittenInbegrepen in een editie, of standalone
Voordat je koopt
Drie dingen die je eerst moet weten
Wat sgcCrypto is, of je het al bezit, en waar het draait. Alle drie antwoorden zijn kort.
sgcCrypto is puur functies, geen componenten
Elk van de 43 units exporteert gewone functies en procedures. Er is geen Tsgc*-klasse, niets wordt met RegisterComponents geregistreerd, en er is geen sgcCrypto_Reg.pas. Je roept sgcAES_GCM_Encrypt(aKey, aIV, aPlain, aAAD, aTag) aan zoals je elke RTL-functie zou aanroepen, vanuit een formulier, een service, een console-app of een thread.
Volledige broncode zit bij elke licentie, zodat de primitieven doorlopen in je eigen debugger in plaats van te verdwijnen in een binary of een DLL.
Editie-overlap
Bezit je al een sgcWebSockets-editie?
sgcCrypto wordt meegeleverd met sgcWebSockets Standard, Professional en Enterprise, en met All-Access, zonder extra kosten. Als je al een licentie hebt voor een editie vanaf Standard, heb je alle 43 units al, niets extra te kopen.
sgcCrypto bestaat standalone voor het omgekeerde geval: je bezit alleen sgcWebSockets Core, of geen sgcWebSockets-licentie, en wilt de crypto-units zonder een volledige editie te licentiëren.
Platformbereik
sgcCrypto heeft geen platformbeveiliging
In tegenstelling tot de AI- of spraakpakketten beperkt niets in sgcVer.inc sgcCrypto tot Windows. De units zijn gewone Object Pascal-rekenkunde, dus ze compileren voor Win32, Win64, Linux64, macOS, iOS en Android vanuit dezelfde broncode.
De ene platformbewuste unit, sgcCrypto_Random, kiest een CSPRNG-backend per doelplatform (BCryptGenRandom op Windows, of /dev/urandom elders) achter dezelfde aanroep sgcRandomBytes, zodat je code nooit vertakt op platform.
Wat er in de doos zit
43 units, zes functiefamilies
Elke unit is gecompileerde Object Pascal, aanroepbaar vanuit elk Delphi 7 tot 13- of C++ Builder-project. Er is geen externe DLL, geen OpenSSL-binding en geen codegenerator: de primitieven zijn rechtstreeks geïmplementeerd in de unit die je aan je uses-clausule toevoegt.
Symmetrisch5 units
AES, ChaCha20 en de AEAD-constructies erbovenop
sgcCrypto_AES dekt CBC, GCM en CTR; sgcCrypto_Modes voegt ECB, OFB, CFB, ciphertext-stealing CTS, AES-CCM, en AES Key Wrap / Key Wrap with Padding (RFC 3394 / 5649) toe. sgcCrypto_CMAC is AES-CMAC en AES-GMAC. sgcCrypto_ChaCha implementeert ChaCha20, XChaCha20, Salsa20 en XSalsa20, en sgcCrypto_Poly1305 combineert Poly1305 ermee tot de AEAD-ciphers ChaCha20-Poly1305 en XChaCha20-Poly1305 uit RFC 8439. AES-CCM is de AEAD-modus die Zigbee, Bluetooth en de TLS CCM-suites met naam voorschrijven, omdat er niets nodig is buiten het blokcijfer zelf, en CBC en ECB nemen allebei het padding-schema van je keuze aan, PKCS#7, ANSI X9.23, ISO 7816-4 en de rest, voor de dag dat je moet lezen wat een ander systeem heeft geschreven. sgcAES_GCM_Decrypt en de Poly1305-verifiers vergelijken de authenticatietag in constante tijd en weigeren plaintext terug te geven wanneer die faalt.
sgcCrypto_SHA2 en sgcCrypto_Keccak dekken SHA-1/2, SHA-3, SHAKE, cSHAKE en KMAC; sgcCrypto_Blake2b en sgcCrypto_Blake2s voegen BLAKE2 toe. sgcCrypto_HMAC is keyed message authentication. Om een wachtwoord om te zetten in een sleutel: sgcCrypto_KDF (PBKDF2), sgcCrypto_HKDF, sgcCrypto_Scrypt en sgcCrypto_Argon2, dat alle drie Argon2-varianten implementeert, d, i en id, de winnaar van de Password Hashing Competition. sgcCrypto_SipHash geeft je een snelle keyed hash voor hashtabelsleutels, en sgcCrypto_TLSH is een fuzzy hash met een gelijkenisafstandfunctie, geen cryptografische digest, nuttig voor het detecteren van bijna-duplicaten.
Ed25519/Ed448, X25519/X448, secp256k1, Brainpool en RSA
sgcCrypto_Ed25519/Ed448 ondertekenen en verifiëren; sgcCrypto_X25519/X448 doen de bijbehorende Diffie-Hellman. sgcCrypto_ECCurves voegt ECDSA en ECDH toe over zeven curves, secp256k1, de drie Brainpool-curves en NIST P-256/P-384/P-521, met deterministische RFC 6979-nonces en handtekeningen in de raw of de DER-vorm, en BIP-340 Schnorr-ondertekening erbovenop, met de x-only publieke sleutels die Taproot, Nostr en Lightning verwachten. sgcCrypto_EC is de JOSE-georiënteerde tegenhanger: onderteken en verifieer een JWS rechtstreeks, ES256/384/512. sgcCrypto_RSA verifieert PKCS#1 v1.5- en PSS-handtekeningen direct vanuit een PEM-sleutel, en sgcCrypto_RSA_Keys gaat verder met sleutelgeneratie op elke bitlengte, OAEP- en PKCS#1 v1.5-versleuteling, en DER/PEM-export in zowel de PKCS#1- als de PKCS#8-vorm BEGIN PRIVATE KEY. RSA- en EC-sleutels importeren net zo gemakkelijk als ze exporteren, DER of PEM, zodat een eenmaal gegenereerde sleutel opnieuw kan worden opgeslagen en geladen in plaats van slechts zolang het proces te bestaan. sgcCrypto_ECIES maakt het compleet met hybride seal/open-versleuteling naar een X25519-publieke sleutel.
sgcCrypto_ASN1 leest DER en PEM en parseert PKCS#1/SEC 1-sleutels; sgcCrypto_DER schrijft elke tag die een certificaat of CSR nodig heeft. sgcCrypto_X509 parseert een certificaat, verifieert dat het door een gegeven issuer ondertekend is, doorloopt en verifieert een keten, verifieert een CSR, en parseert een CRL om intrekking te controleren. sgcCrypto_X509_Gen genereert een self-signed certificaat of een PKCS#10-CSR vanaf nul, en een CA geeft uit met sgcX509_CreateSigned of sgcX509_CreateSignedFromCSR: volledige subject- en issuer-distinguished-name, geldigheidsvenster, CA-vlag met een path-length-beperking, key-usage-vlaggen, extended-key-usage-OID's en subject-alternative-names, inclusief IP-adres-SAN's, die nu IPv6 accepteren in elke tekstvorm van RFC 4291, en URI-SAN's voor SPIFFE-achtige service-identiteiten.
Ondertekenen is niet langer beperkt tot RSA en EC. sgcX509_MLDSAKey en sgcX509_SLHDSAKey omwikkelen een post-quantum sleutel voor sgcX509_CreateSelfSignedEx en sgcX509_CreateCSREx, zodat een certificaat of een CSR met ML-DSA of SLH-DSA ondertekend kan worden. Een CA kan ook een publieke ML-KEM-sleutel certificeren (RFC 9935), die niet kan ondertekenen, dus bezit moet op een andere manier worden aangetoond. Aan de leeskant kreeg TsgcX509PublicKeyType er x509pkMLDSA, x509pkSLHDSA en x509pkMLKEM bij, en sgcX509_VerifyChain handhaaft nu de path length van basicConstraints en de nameConstraints-extensie over dNSName, iPAddress, rfc822Name, uniformResourceIdentifier en directoryName, aan de genererende kant geschreven vanuit PermittedDNSNames, ExcludedDNSNames, PermittedIPRanges en ExcludedIPRanges. Een EC-certificaat komt nog steeds ruwweg een derde van de grootte van een RSA-certificaat uit en verifieert veel sneller, wat de reden is waarom nieuwe implementaties er een gebruiken.
ML-KEM, ML-DSA en SLH-DSA, plus een hybride combiner
sgcCrypto_MLKEM is FIPS 203-sleutelencapsulatie, drie parametersets (ML-KEM-512/768/1024), met impliciete afwijzing bij een misvormde ciphertext. sgcCrypto_MLDSA is FIPS 204-ondertekening, ML-DSA-44/65/87. sgcCrypto_SLHDSA is FIPS 205, alle zes SHAKE-parametersets: 128s, 128f, 192s, 192f, 256s, 256f. Omdat ML-KEM alleen alles inzet op een jongere lattice-aanname dan elliptische curves, combineert sgcCrypto_MLKEM_Hybrid een X25519-geheim en een ML-KEM-geheim tot één gedeelde sleutel, zodat het resultaat nooit zwakker is dan de klassieke helft, het migratiepatroon waar de industrie naartoe convergeert.
Dezelfde unit implementeert X-Wing (draft-connolly-cfrg-xwing-kem-10), X25519 met ML-KEM-768 als één KEM: een publieke sleutel van 1216 bytes, een private sleutel van 32 bytes (de seed), een ciphertext van 1120 bytes en een gedeeld geheim van 32 bytes, via sgcXWing_GenerateKeyPair, sgcXWing_Encapsulate en sgcXWing_Decapsulate. Ze bouwt ook de hybride TLS 1.3-key shares van RFC 10024 voor X25519MLKEM768, SecP256r1MLKEM768 en SecP384r1MLKEM1024 (IANA-codepoints 0x11EC, 0x11EB en 0x11ED). Die drie zijn geen zelfstandige KEM's, ze bouwen alleen een TLS-key share.
Alle drie de algoritmen lezen en schrijven sleutels nu als X.509 SubjectPublicKeyInfo, PKCS#8 OneAsymmetricKey en PEM, zodat een post-quantum sleutel in dezelfde bestanden past als een RSA- of EC-sleutel. Private sleutels van ML-DSA en ML-KEM hebben drie vormen, gekozen met TsgcPQCPrivateKeyFormat: pqkfSeed schrijft alleen de seed (32 bytes voor ML-DSA, de d||z-seed van 64 bytes voor ML-KEM), pqkfExpanded schrijft de uitgeklapte sleutel, pqkfBoth draagt beide. SLH-DSA heeft één vorm van private sleutel. sgcMLDSA_GenerateKeyPairAndSeed en sgcMLKEM_GenerateKeyPairAndSeed geven de seed samen met het sleutelpaar terug, zodat een bestand in seed-vorm meteen na het genereren geschreven kan worden.
Eenmalige wachtwoorden, encoding en versleutelde ZIP-entries
sgcCrypto_OTP genereert en verifieert HOTP- en TOTP-codes, dezelfde zescijferige codes die een authenticator-app toont, met een verificatievenster in constante tijd dat klokdrift opvangt. sgcCrypto_Encoding bevat de hulpfuncties die de rest van de bibliotheek deelt: vergelijking in constante tijd, veilig buffer wissen, hex, Base64url en Base32. sgcCrypto_Zip_AE2 implementeert WinZip AES-versleuteling, AE-1 en AE-2, voor het versleutelen van individuele ZIP-entries. sgcCrypto_Random is de platformonafhankelijke CSPRNG achter elke sleutel en nonce die elders in de bibliotheek wordt gegenereerd, en sgcCrypto_Legacy houdt MD4/MD5/HMAC-MD5/DES-ECB beschikbaar voor interoperabiliteit met oudere formaten, niet voor nieuwe ontwerpen.
Een TLS 1.3- en TLS 1.2-engine in hetzelfde Object Pascal
Het pakket bevat ook een TLS 1.3- en TLS 1.2-implementatie die bovenop de sgcCrypto-primitieven is geschreven. Ze zit in de sgcSSL_NativeTLS*-units in plaats van in sgcCrypto_*, dus ze is geen van de 43, en ze wordt overal meegeleverd waar sgcCrypto dat wordt. Selecteer ze met één eigenschap op elke sgcWebSockets-client of -server, en er valt op geen enkel platform iets te implementeren.
// Client: no OpenSSL, no SChannel, no platform TLS stack
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohNativeTLS;
// Lowest version allowed: tls1_2 negotiates TLS 1.3 or TLS 1.2, tls1_3 only 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;
// Both lists are OpenSSL style, colon separated. This group list is the default.
WSClient.TLSOptions.NativeTLS_Options.Groups :=
'X25519MLKEM768:X25519:secp256r1:secp384r1';
// Only TLS 1.3 suites here means TLS 1.3 only. Leave it empty for the default,// which adds the TLS 1.2 ECDHE suites with AES-GCM and ChaCha20-Poly1305.
WSClient.TLSOptions.NativeTLS_Options.CipherSuites :=
'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256';
// Server: the same switch on SSLOptions, IOCP and EPOLL engines included
WSServer.SSLOptions.IOHandler := iohNativeTLS;
Post-quantum sleuteluitwisseling meteen aan
De standaardlijst met groepen begint met X25519MLKEM768, de RFC 10024-hybride van X25519 en ML-KEM-768, zodat een handshake met een peer die dat ondersteunt al post-quantum is zonder configuratie. SecP256r1MLKEM768 en SecP384r1MLKEM1024 staan op dezelfde lijst beschikbaar.
Niets te implementeren, op geen enkel doelplatform
Geen libssl, geen libcrypto, geen SChannel en geen TLS-stack van het platform, alleen hetzelfde Object Pascal op Win32, Win64, Linux64, macOS, iOS en Android. Zet TLSOptions.IOHandler := iohNativeTLS op een client, of SSLOptions.IOHandler := iohNativeTLS op een server, inclusief de IOCP- en EPOLL-serverengines.
De roots die de machine al vertrouwt
Zet NativeTLS_Options.UseSystemRoots op True en de engine voegt de vertrouwde roots van het besturingssysteem toe aan RootCertFile: de ROOT-opslag op Windows, en op elk ander platform de eerste CA-bundel die op de standaardlocaties wordt gevonden. Hij leest nooit de macOS- of iOS-sleutelhanger of de Android-store. Het staat standaard uit, dus de ankers blijven precies wat RootCertFile zegt. Op een server geldt dezelfde eigenschap voor de clientcertificaten die hij verifieert.
Ken de beperkingen voordat je overstapt
De engine spreekt alleen TLS 1.3 en TLS 1.2, zonder TLS 1.1, TLS 1.0 of SSL, en de hybride post-quantum groepen bestaan alleen in TLS 1.3, dus een TLS 1.2-verbinding gebruikt X25519, secp256r1 of secp384r1. Er is geen sessiehervatting en geen PSK, geen 0-RTT en geen QUIC. Intrekking en certificaatbeleid worden niet gecontroleerd, en het component-event OnSSLVerifyPeer is er niet voor beschikbaar, de engine heeft eigen verificatiehooks. Blijf bij OpenSSL of een platform-backend wanneer je daar iets van nodig hebt.
Snelstart
Geen component, geen Object Inspector
Voeg een unit toe aan uses en roep een functie aan. Elke onderstaande aanroep komt uit een andere van de 43 units, over symmetrisch, hashing, handtekeningen en post-quantum heen.
Tagcontroles, HOTP/TOTP-verificatie en sgcConstantTimeEquals vergelijken in constante tijd, en dat geldt ook voor het werk aan het geheim. AES draait op een bitsliced kern die het geheugen nooit indexeert met een geheime byte en er nooit op vertakt, GHASH vermenigvuldigt onder een masker, en privé-bewerkingen van RSA worden geblindeerd en gecontroleerd tegen de publieke exponent voordat er iets wordt teruggegeven. ECDSA-ondertekening, ECDH en EC-sleutelgeneratie gebruiken een scalaire vermenigvuldiging in constante tijd, en Ed25519-ondertekening leest de scalar in vaste vensters met een volledige optelformule.
Impliciete afwijzing, en invoer eerst gecontroleerd
Een ciphertext van de juiste lengte die niet decrypteert levert een pseudorandom geheim op in plaats van een fout, impliciete afwijzing volgens FIPS 203, zodat een aanvaller er niets van leert. Een misvormde publieke sleutel, een ciphertext of sleutel van de verkeerde grootte, en een privésleutel die de hashcontrole niet doorstaat, worden vóór enige berekening geweigerd, en een geïmporteerde ML-KEM-, ML-DSA- of SLH-DSA-privésleutel wordt op consistentie gecontroleerd, zodat een sleutel waarvan de delen niet bij elkaar horen niet per ongeluk kan worden geladen.
Delphi 7 tot en met 13, ongewijzigd
Er wordt nergens een native 64-bit integertype verondersteld. sgcCrypto_Int64 en TsgcBigInt emuleren de rekenkunde die de hashes, curves en post-quantum-units nodig hebben, zodat dezelfde broncode op elke ondersteunde versie compileert.
Niets verlaat je proces
Elke functie draait in-process op data die jij meegeeft. Er is geen netwerkaanroep, geen telemetrie en nergens een eSeGeCe-relais in de bibliotheek.
Prijzen
Inbegrepen, of een standalone pakket
sgcCrypto wordt gratis meegeleverd met sgcWebSockets Standard, Professional en Enterprise. Als je alleen sgcWebSockets Core bezit, is het ook als eigen pakket verkrijgbaar, vanaf €149 voor één ontwikkelaar. Alle licenties bevatten volledige broncode, 1 jaar updates en 50% tot 70% verlengingskorting: 50% wanneer je één pakket verlengt, 60% bij twee, 70% bij drie of meer.
sgcCrypto
€149
Standalone pakket. Single-, Team- en Site-licenties beschikbaar. Gratis als je al sgcWebSockets Standard, Professional of Enterprise bezit.
Alle 43 sgcCrypto_*.pas-units
sgcWebSockets Core runtime inbegrepen
Delphi & C++ Builder, alle zes platforms
Volledige broncode
1 jaar updates
Al op sgcWebSockets Standard, Professional of Enterprise? sgcCrypto zit al in je installer, geen bestelling nodig.
Niet-goed-geld-terug-garantie van 30 dagenNiet tevreden? Vraag binnen 30 dagen na aankoop een volledige terugbetaling aan. Bekijk het terugbetalingsbeleid
Cryptografie zonder componentoverhead
43 pure functies voor versleuteling, hashing, handtekeningen, PKI en post-quantum sleuteluitwisseling, plus een TLS 1.3- en TLS 1.2-engine die erop gebouwd is, klaar waar je Delphi- of C++ Builder-code al draait. Volledige broncode, geen relais, geen DLL.