sgcCrypto Funktionsübersicht

Alles, was sgcCrypto kann, aufgeschlüsselt über die 43 Units auf der Festplatte. Es gibt hier keine Komponenten und keine Design-Time-Eigenschaften: Jede Zeile unten ist eine Funktion oder Prozedur, die du direkt aufrufst. Vollständiger Quellcode ist bei jeder Lizenz dabei. Die Sprungmarken unten führen dich zu den sechs Fähigkeitsfamilien, in die die Units fallen.

sgcCrypto hat keine Komponenten. Die 43 Units unten exportieren einfache Funktionen, es gibt keine Tsgc*-Klasse und keine sgcCrypto_Reg.pas. Füge eine Unit zu deiner uses-Klausel hinzu und rufe die Funktion auf.

Bereits enthalten. sgcCrypto ist bei sgcWebSockets Standard, Professional und Enterprise sowie bei All-Access kostenlos dabei. Es wird auch eigenständig verkauft (mit gebündelter sgcWebSockets-Core-Runtime) für Kunden, die nur Core besitzen. Siehe Preise.

Symmetrisch

AES, CCM, ChaCha20, Poly1305, 5 Units

Hashing & KDF

SHA-2/3, BLAKE2, Argon2, 11 Units

Signaturen & Schlüsselaustausch

Ed25519, X25519, Schnorr, RSA, 10 Units

PKI

X.509, ASN.1, RSA & EC CSR, 5 Units

Post-Quanten

ML-KEM, ML-DSA, SLH-DSA, 6 Units

OTP & Sonstiges

HOTP/TOTP, Kodierung, ZIP-AES, 6 Units

43 Quell-Units

Jede sgcCrypto_*.pas-Unit unter sgcWebSockets/delphi/Source/, gruppiert nach Familie.

UnitFamilieWas sie macht
sgcCrypto_AESSymmetrischAES-CBC, AES-GCM (AEAD), AES-CTR.
sgcCrypto_ModesSymmetrischAES-ECB, OFB, CFB, CTS, CCM (AEAD), Key Wrap / Key Wrap with Padding, sowie die sieben Padding-Schemata.
sgcCrypto_CMACSymmetrischAES-CMAC- und AES-GMAC-Nachrichtenauthentifizierung.
sgcCrypto_ChaChaSymmetrischChaCha20, XChaCha20, Salsa20, XSalsa20.
sgcCrypto_Poly1305SymmetrischPoly1305-MAC, ChaCha20-Poly1305 und XChaCha20-Poly1305 AEAD.
sgcCrypto_SHA2Hashing & KDFSHA-1, SHA-224, SHA-256, SHA-384, SHA-512.
sgcCrypto_KeccakHashing & KDFSHA-3, SHAKE128/256, cSHAKE, KMAC.
sgcCrypto_Blake2bHashing & KDFBLAKE2b, mit oder ohne Schlüssel.
sgcCrypto_Blake2sHashing & KDFBLAKE2s, mit oder ohne Schlüssel.
sgcCrypto_HMACHashing & KDFHMAC-SHA1/256/384/512.
sgcCrypto_KDFHashing & KDFPBKDF2, KDF1, KDF2 und X9.63, wählbarer Hash.
sgcCrypto_HKDFHashing & KDFHKDF Extract-and-Expand.
sgcCrypto_ScryptHashing & KDFscrypt, speicherharte KDF.
sgcCrypto_Argon2Hashing & KDFArgon2d, Argon2i, Argon2id.
sgcCrypto_SipHashHashing & KDFSipHash-2-4 Keyed Hash.
sgcCrypto_TLSHHashing & KDFTLSH Fuzzy Hash und Ähnlichkeits-Diff.
sgcCrypto_Ed25519Signaturen & SchlüsselaustauschEd25519 signieren / verifizieren.
sgcCrypto_X25519Signaturen & SchlüsselaustauschX25519 Diffie-Hellman.
sgcCrypto_Ed448Signaturen & SchlüsselaustauschEd448 signieren / verifizieren.
sgcCrypto_X448Signaturen & SchlüsselaustauschX448 Diffie-Hellman.
sgcCrypto_GF448Signaturen & SchlüsselaustauschInterne GF(2^448-2^224-1)-Körperarithmetik für Ed448/X448.
sgcCrypto_ECCurvesSignaturen & SchlüsselaustauschECDSA / ECDH über secp256k1, Brainpool P256r1/P384r1/P512r1 und NIST P-256/P-384/P-521, DER-Signaturen, Schlüsselexport/-import und BIP-340-Schnorr.
sgcCrypto_ECSignaturen & SchlüsselaustauschAllgemeines EC-Signieren/-Verifizieren als JWS (ES256/384/512), ECDH.
sgcCrypto_RSASignaturen & SchlüsselaustauschRSA PKCS#1-v1.5-Signieren, PKCS#1-v1.5-/PSS-Verifizieren, aus PEM oder roh.
sgcCrypto_RSA_KeysSignaturen & SchlüsselaustauschRSA-Schlüsselerzeugung, OAEP (mit unabhängigem MGF1-Hash), PSS, PKCS#1-v1.5-Signieren/-Verifizieren/-Verschlüsseln/-Entschlüsseln, PKCS#1- und PKCS#8-DER/PEM-Export und -Import.
sgcCrypto_ECIESSignaturen & SchlüsselaustauschECIES-Seal-/-Open-Hybridverschlüsselung über X25519.
sgcCrypto_ASN1PKIDER-Reader, PEM-Codec, PKCS#1-/SEC-1-Schlüsselparsing.
sgcCrypto_DERPKIDER-Writer-Primitiven.
sgcCrypto_BigIntegerPKIInterne Arithmetik mit beliebiger Genauigkeit.
sgcCrypto_X509PKIX.509 parsen, verifizieren, Kette, CRL, Widerruf.
sgcCrypto_X509_GenPKIErzeugung von selbstsigniertem Zertifikat und PKCS#10-CSR, RSA- oder EC-signiert, mit URI Subject Alternative Names.
sgcCrypto_MLKEMPost-QuantenML-KEM-Schlüsselkapselung (FIPS 203), 3 Parametersätze.
sgcCrypto_MLKEM_PolyPost-QuantenInterne Polynomring-Arithmetik hinter ML-KEM.
sgcCrypto_MLKEM_HybridPost-QuantenHybride X25519- + ML-KEM-Schlüsselkapselung.
sgcCrypto_MLDSAPost-QuantenML-DSA-Digitalsignaturen (FIPS 204), 3 Parametersätze.
sgcCrypto_MLDSA_PolyPost-QuantenInterne Polynomring-Arithmetik hinter ML-DSA.
sgcCrypto_SLHDSAPost-QuantenSLH-DSA-Signaturen (FIPS 205), 6 SHAKE-Parametersätze.
sgcCrypto_OTPOTP & SonstigesHOTP, TOTP, konstantzeitiges Verifikationsfenster.
sgcCrypto_EncodingOTP & SonstigesKonstantzeitiger Vergleich, sicheres Nullsetzen, Hex/Base64url/Base32.
sgcCrypto_Zip_AE2OTP & SonstigesWinZip-AES-Verschlüsselung für ZIP-Einträge, AE-1 / AE-2.
sgcCrypto_LegacyOTP & SonstigesMD4, MD5, HMAC-MD5, DES-ECB, RIPEMD-160 und HMAC-RIPEMD160, nur für Interoperabilität.
sgcCrypto_RandomOTP & SonstigesPlattformübergreifender CSPRNG.
sgcCrypto_Int64OTP & SonstigesInterne 64-Bit-Integer-Emulation für Delphi 7.

Verschlüsselung & MACs

AES in den Modi, die Produktionscode tatsächlich nutzt, plus die ChaCha20-/Poly1305-AEAD-Familie.

FähigkeitFunktionHinweise
AES-CBCsgcAES_CBC_Encrypt / sgcAES_CBC_DecryptPKCS#7-Padding, 16-Byte-IV. Die Schlüssellänge wählt die Chiffre: 16/24/32 Byte = AES-128/192/256.
AES-CBC, ohne PaddingsgcAES_CBC_Encrypt_NoPad / sgcAES_CBC_Decrypt_NoPadDer Modus, den Java als AES/CBC/NoPadding schreibt. Die Eingabe muss bereits ein Vielfaches von 16 Byte sein; eine nicht ausgerichtete Eingabe löst eine Exception aus, statt still aufgefüllt zu werden zu etwas, das die Gegenseite nicht lesen kann.
AES-GCM (AEAD)sgcAES_GCM_Encrypt / sgcAES_GCM_DecryptEmpfohlen: 12-Byte-IV. 16-Byte-Tag, in konstanter Zeit verglichen; Decrypt gibt bei fehlgeschlagenem Tag False und leeren Klartext zurück.
AES-CCM (AEAD)sgcAES_CCM_Encrypt / sgcAES_CCM_DecryptDie AEAD-Chiffre, die ressourcenbeschränkte und IoT-Stacks vorschreiben, Zigbee, 802.15.4, Bluetooth und die TLS-CCM-Suiten, weil sie nur die Blockchiffre und keine GHASH-Tabelle benötigt. Nonce 7 bis 13 Byte, Tag 4 bis 16 Byte, in konstanter Zeit verifiziert.
AES-CTRsgcAES_CTRSRTP-artiges AES-CM (RFC 3711). Symmetrischer Aufruf, kein Padding, 128-Bit-Big-Endian-Zähler.
AES-ECBsgcAES_ECB_Encrypt / sgcAES_ECB_DecryptKein IV, kein Chaining. Enthalten zur Interoperabilität mit Formaten, die es vorschreiben.
Padding-SchematasgcPad_Add / sgcPad_Remove, sgcAES_CBC_EncryptPad / DecryptPad, sgcAES_ECB_EncryptPad / DecryptPadTsgcPadding deckt None, PKCS#7, Zero, ANSI X9.23, ISO 7816-4, ISO 10126-2 und TBC ab, sodass CBC und ECB Daten aus einem System lesen und schreiben können, das sich nicht für PKCS#7 entschieden hat. sgcPad_Remove gibt bei jeder Art von fehlerhaftem Padding False über denselben Pfad zurück.
AES-OFB / AES-CFBsgcAES_OFB, sgcAES_CFB_Encrypt / sgcAES_CFB_DecryptFeedback-Modi im Stream-Cipher-Stil.
AES-CTSsgcAES_CTS_Encrypt / sgcAES_CTS_DecryptCiphertext Stealing: verschlüsselt Daten, die kein Vielfaches der Blockgröße sind, ohne Padding-Overhead.
AES Key WrapsgcAES_KeyWrap / sgcAES_KeyUnwrapRFC 3394, zum Verpacken eines Schlüssels unter einem anderen.
AES Key Wrap with PaddingsgcAES_KeyWrapPad / sgcAES_KeyUnwrapPadRFC 5649, für Schlüsselmaterial, das kein Vielfaches von 8 Byte ist.
AES-CMACsgcAES_CMAC / sgcAES_CMAC_VerifyRFC 4493 Nachrichtenauthentifizierungscode.
AES-GMACsgcAES_GMAC / sgcAES_GMAC_VerifyDer reine Authentifizierungsmodus von GCM: Die gesamte Nachricht wird als zusätzliche Daten übertragen, nichts wird verschlüsselt. Der IV darf unter einem Schlüssel niemals wiederholt werden, und der 16-Byte-Tag wird in konstanter Zeit verglichen.
Low-Level-BlockprimitivensgcAES_ExpandKey, sgcAES_EncryptBlock, sgcAES_DecryptBlockFür die obigen Modus- und MAC-Units freigelegt; direkt aufrufen nur, um einen noch nicht bereitgestellten Modus zu bauen.
ChaCha20sgcChaCha20RFC 8439, 96-Bit-Nonce, 32-Bit-Zähler.
XChaCha20sgcXChaCha20192-Bit-erweiterte Nonce, sicher für zufällige Nonce-Erzeugung in großem Umfang.
Salsa20 / XSalsa20sgcSalsa20 / sgcXSalsa20Die Vorgänger-Stream-Cipher-Familie, beide Nonce-Größen.
Subkey-AbleitungsgcHChaCha20 / sgcHSalsa20Was die X-Varianten intern nutzen, um einen Subkey aus den ersten 16 Nonce-Bytes abzuleiten.
Poly1305-MACsgcPoly1305 / sgcPoly1305_VerifyEinmal-Authentifikator, RFC 8439. Einen Poly1305-Schlüssel nie wiederverwenden.
ChaCha20-Poly1305 AEADsgcChaCha20Poly1305_Encrypt / _DecryptDie AEAD-Chiffre hinter der zweiten Cipher-Suite von TLS 1.3 und SSH.
XChaCha20-Poly1305 AEADsgcXChaCha20Poly1305_Encrypt / _DecryptDieselbe AEAD, 192-Bit-Nonce, die Konstruktion, die libsodium crypto_aead_xchacha20poly1305_ietf nennt.

Digests, MACs & Passwort-Hashing

Jede gängige Hash-Familie, plus PBKDF2, HKDF, scrypt und alle drei Argon2-Varianten.

FähigkeitFunktionHinweise
SHA-1 / SHA-2sgcSHA1, sgcSHA224, sgcSHA256, sgcSHA384, sgcSHA512FIPS 180-4. SHA-1 bleibt aus Interoperabilitätsgründen erhalten, nicht empfohlen für neue Signaturen.
SHA-3sgcSHA3_224 / _256 / _384 / _512FIPS 202, der Keccak-Schwamm, strukturell unabhängig von SHA-2.
SHAKE128 / SHAKE256sgcSHAKE128 / sgcSHAKE256Extendable-Output-Funktionen: fordere jede beliebige Digest-Länge an.
cSHAKE128 / cSHAKE256sgcCSHAKE128 / sgcCSHAKE256Domain-getrenntes SHAKE, NIST SP 800-185, die Basis für KMAC.
KMAC128 / KMAC256sgcKMAC128 / sgcKMAC256Keccak-basierter MAC mit variabler Ausgabelänge.
BLAKE2bsgcBlake2b / sgcBlake2b_KeyedRFC 7693, Digests bis zu 64 Byte, eingebautes Keying (keine separate HMAC nötig).
BLAKE2ssgcBlake2s / sgcBlake2s_KeyedRFC 7693, Digests bis zu 32 Byte, optimiert für 32-Bit-Plattformen.
Streaming-DigestssgcBlake2b_Init/_Update/_Final, entsprechende Aufrufe für Keccak/Blake2sZum Hashen von Daten, die zu groß sind, um sie auf einmal im Speicher zu halten.
HMACsgcHMAC_SHA1 / _SHA256 / _SHA384 / _SHA512RFC 2104 Keyed Hashing über die SHA-1/2-Familie.
RIPEMD-160 / HMAC-RIPEMD160sgcRIPEMD160, sgcHMAC_RIPEMD160ISO/IEC 10118-3 und RFC 2286. Das 160-Bit-Digest, über das Bitcoin-Adressen SHA-256 schichten, und das, das OpenPGP namentlich vorschreibt.
PBKDF2sgcPBKDF2, sgcPBKDF2_SHA1 / _SHA256 / _SHA512RFC 8018. Nur mäßig speicherhart; bevorzuge Argon2id oder scrypt, wenn du wählen kannst.
HKDFsgcHKDF_Extract_SHA256 / _SHA384, sgcHKDF_Expand_SHA256 / _SHA384, sgcHKDF_SHA256 / _SHA384RFC 5869, Extract-then-Expand-Schlüsselableitung, der Standardweg, ein geteiltes Geheimnis in mehrere Schlüssel zu verwandeln.
KDF1 / KDF2 / X9.63sgcKDF1, sgcKDF2, sgcKDF_X963Die Zähler-basierten Ableitungen, die ISO 18033-2, IEEE 1363a und ANSI X9.63 definieren, das, was RSA-KEM und ECIES namentlich vorschreiben. KDF1 zählt ab 0 und KDF2 ab 1, ein Unterschied, der reale Interoperabilitätsfehler verursacht hat, prüfe daher, welche der beiden deine Spezifikation meint.
scryptsgcScryptRFC 7914, speicherhart, widersteht GPU-/ASIC-Angriffen weit besser als PBKDF2.
Argon2sgcArgon2 (d / i / id), sgcArgon2id-KomfortwrapperRFC 9106, der Gewinner der Password Hashing Competition. Vollständige Schnittstelle mit optionalem Secret (Pepper) und Associated Data.
SipHash-2-4sgcSipHash24 / sgcSipHash24_ValueSchnelle Keyed PRF für Hashtable-Schlüssel, widersteht Hash-Flooding-Denial-of-Service.
TLSH Fuzzy HashsgcTLSH, sgcTLSH_Init/_Update/_FinalLokalitätssensitiver Hash zur Erkennung von Near-Duplicates, kein kryptographischer Digest.
TLSH-ÄhnlichkeitswertsgcTLSH_DiffDistanz zwischen zwei TLSH-Digests; kleiner bedeutet ähnlicher.

Ed25519/Ed448, X25519/X448, secp256k1, Brainpool & RSA

Signiere, verifiziere und leite gemeinsame Geheimnisse über fünf unterschiedliche Kurvenfamilien plus RSA ab.

FähigkeitFunktionHinweise
Ed25519 signieren / verifizierensgcEd25519_Sign / sgcEd25519_VerifyRFC 8032. 32-Byte-Public-Key, 64-Byte-Signatur. Verify weist nicht-kanonische Punkte und S >= L gemäß Abschnitt 5.1.7 zurück.
X25519-SchlüsselaustauschsgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecretRFC 7748 Diffie-Hellman über Curve25519.
Ed448 signieren / verifizierensgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_VerifyRFC 8032, die 448-Bit-EdDSA-Kurve (Goldilocks).
X448-SchlüsselaustauschsgcX448, sgcX448_PublicKey, sgcX448_SharedSecretRFC 7748 Diffie-Hellman über Curve448.
secp256k1sgcECDSA_SignHash / VerifyHash mit eccSecp256k1Die Bitcoin-/Ethereum-Kurve, SEC 2, in sgcCrypto_ECCurves.
Brainpool P256r1 / P384r1 / P512r1dieselben Funktionen mit eccBrainpoolP256r1 / P384r1 / P512r1RFC 5639, verbreitet in EU-eIDAS- und Behördenprofilen.
NIST P-256 / P-384 / P-521dieselben Funktionen mit eccP256 / eccP384 / eccP521TsgcECCurve benennt jetzt sieben Kurven, sodass Schlüsselerzeugung, Signieren, Verifizieren, ECDH und Punktkompression alle die NIST-Primkurven aus rohen Schlüssel-Bytes erreichen, nicht nur aus einer PEM-Datei.
Deterministische ECDSA-Nonceeingebaut in sgcECDSA_SignHashRFC 6979: Die Nonce wird aus dem privaten Schlüssel und der Nachricht abgeleitet, kein RNG-Fehlermodus.
ECDH (secp256k1 / Brainpool)sgcECDH_SharedSecretGemeinsames Geheimnis über dieselben vier Kurven.
PunktkompressionsgcEC_Compress / sgcEC_DecompressSpeichere oder übertrage die kürzere komprimierte Public-Key-Form.
EC als JWS (ES256/384/512)sgcECDSA_SignJWS / sgcECDSA_VerifyJWSKurve automatisch aus der angeforderten Bitlänge gewählt, direkt aus einem PEM-Schlüssel signieren/verifizieren, JOSE-orientiertes Gegenstück zu ECCurves.
Generisches ECDHsgcECDHGemeinsames Geheimnis aus einem rohen privaten Schlüssel und dem öffentlichen Punkt der Gegenseite.
Rohes / DER-ECDSA-VerifysgcECDSA_VerifyRaw / sgcECDSA_VerifyDERVerifiziert gegen ein rohes (Qx, Qy, r, s)-Tupel oder eine DER-kodierte Signatur.
DER-ECDSA-Signieren & -KonvertierungsgcECDSA_SignDER / sgcECDSA_VerifyDER, sgcECDSA_RawToDER / sgcECDSA_DERToRawX.509, CMS und TLS tragen den DER-ECDSA-Sig-Value, eine SEQUENCE aus INTEGER r gefolgt von INTEGER s. JOSE und WebAuthn tragen stattdessen das rohe Paar R || S. Signiere direkt in eine der beiden Formen, oder konvertiere eine bestehende Signatur zwischen ihnen.
Schnorr-Signaturen (BIP-340)sgcSchnorr_PublicKey, sgcSchnorr_Sign, sgcSchnorr_VerifyNur secp256k1, mit x-only 32-Byte-Public-Keys und 64-Byte-Signaturen: was Taproot, Nostr und Lightning verwenden. sgcSchnorr_TaggedHash ist freigelegt, damit sich die BIP-341- und BIP-342-Tags auf derselben Konstruktion aufbauen lassen.
RSA signieren (PKCS#1 v1.5)sgcRSA_SignPKCS1Aus einem PEM-Private-Key, SHA-1/256/384/512-Digest.
RSA verifizieren (PKCS#1 v1.5 / PSS)sgcRSA_VerifyPKCS1, sgcRSA_VerifyPSS, sowie _Raw-Varianten über Modulus/ExponentRFC 8017. Verify funktioniert aus einem PEM-Schlüssel oder rohem Modulus und Exponent, ohne Konstruktion eines Key-Objekts.
RSA-SchlüsselerzeugungsgcRSA_GenerateKeyJede angeforderte Bitlänge, Miller-Rabin-Primzahltest.
RSA-OAEP-VerschlüsselungsgcRSA_OAEP_Encrypt / sgcRSA_OAEP_DecryptRFC 8017 Optimal Asymmetric Encryption Padding.
RSA-OAEP mit unabhängigem MGF1-Hashdie fünf-Parameter-Überladungen von sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_DecryptLege den Label-Hash und den MGF1-Hash getrennt fest. OAEPWithSHA256AndMGF1Padding bedeutet in Bouncy Castle SHA-256 für beide, aber in SunJCE SHA-256 mit MGF1-SHA1, und genau dieser Fehlabgleich ist der übliche Grund, warum die Java-Interoperabilität scheitert.
RSA-PKCS#1-v1.5-VerschlüsselungsgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_DecryptRFC 8017 Abschnitt 7.2, der Modus, den Java RSA/ECB/PKCS1Padding nennt. Decrypt nimmt für jeden Fehler denselben Pfad, sodass es einem Padding-Oracle nichts liefert, womit es arbeiten könnte. Bevorzuge OAEP für alles Neue.
RSA-PSS-/PKCS#1-SignierungsgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / VerifySigniere direkt aus einem erzeugten TsgcRSAPrivateKey.
RSA-SchlüsselexportsgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, entsprechende DER-AufrufePKCS#1- und SubjectPublicKeyInfo-Kodierungen.
PKCS#8- und SEC-1-SchlüsselexportsgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeySEC1DER / SEC1PEM, sgcEC_ExportSubjectPublicKeyInfo, sgcEC_ExportPublicKeyPEMDer Container BEGIN PRIVATE KEY, den Java, .NET und die meisten modernen Tools erwarten, neben der SEC-1-Form BEGIN EC PRIVATE KEY und dem SubjectPublicKeyInfo, das ein Zertifikat einbettet. Unverschlüsselt, das Ergebnis ist also blankes Schlüsselmaterial.
RSA- und EC-SchlüsselimportsgcRSA_ImportPrivateKeyDER / PEM, sgcRSA_ImportPublicKeyDER / PEM, sgcEC_ImportPrivateKeyDER / PEM, sgcEC_ImportPublicKeyDER / PEMDas gab es vorher nicht: Ein erzeugter Schlüssel ließ sich schreiben, aber nie wieder einlesen. Der Import akzeptiert PKCS#1, PKCS#8, SEC 1 und SubjectPublicKeyInfo, DER oder PEM, berechnet die CRT-Parameter oder den öffentlichen Punkt neu, wenn die Datei sie auslässt, und gibt bei fehlerhafter Eingabe False zurück, statt eine Exception auszulösen, sodass sich nicht vertrauenswürdige Dateien gefahrlos übergeben lassen.
ECIES Seal / OpensgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_OpenHybridverschlüsselung an einen X25519-Public-Key: ephemeres ECDH plus ein AEAD, ein Aufruf pro Richtung.

X.509-Zertifikate & ASN.1

Lies ein Zertifikat, das jemand anderes ausgestellt hat, oder erzeuge selbst eines, mit einem DER-Encoder und -Decoder unter beidem.

FähigkeitFunktionHinweise
DER-ReadersgcASN1_Read, sgcASN1_Next, sgcASN1_ContentDurchläuft eine DER-Struktur Knoten für Knoten.
PEM-CodecsgcPEM_Decode / sgcPEM_EncodeRFC 7468, der -----BEGIN ... -----END-Wrapper um DER.
RSA-Schlüssel-ParsingsgcASN1_ParseRSAPrivateKey / PublicKeyPKCS#1- (RFC 8017) Schlüsselstrukturen.
EC-Schlüssel-ParsingsgcASN1_ParseECPrivateKey / PublicKeySEC-1-Schlüsselstrukturen.
DER-Writer, strukturellsgcDER_Sequence, sgcDER_Set, sgcDER_Tagged, sgcDER_ContextExplicit / ImplicitDie Bausteine, aus denen jedes Zertifikatsfeld zusammengesetzt wird.
DER-Writer, WertesgcDER_Integer, sgcDER_OctetString, sgcDER_BitString, sgcDER_Boolean, sgcDER_NullPrimitive Wert-Encoder.
DER-Writer, Strings & IdentifikatorensgcDER_OID, sgcDER_UTF8String, sgcDER_PrintableString, sgcDER_IA5String, sgcDER_TimeObjektbezeichner, die drei String-Typen, die X.509 verwendet, sowie UTCTime/GeneralizedTime.
Zertifikats-ParsingsgcX509_ParseVollständige Zertifikatsstruktur: Subject, Issuer, Gültigkeit, Public Key, Erweiterungen.
Signatur-/Ketten-VerifikationsgcX509_VerifySignedBy, sgcX509_VerifyChainVerifiziere ein Zertifikat gegen einen Aussteller, oder durchlaufe und verifiziere ein Array von DER-Zertifikaten.
CRL-Parsing & WiderrufsgcX509_CRL_Parse, sgcX509_IsRevoked, sgcX509_CRL_VerifySignedByParst eine Certificate Revocation List und prüft eine Seriennummer dagegen.
NamensformatierungsgcX509_SubjectRFC2253, sgcX509_IssuerRFC2253, sgcX509_SubjectOneLineRFC-2253-Distinguished-Name-Strings, für Logging und Anzeige.
Erweiterungen & SANssgcX509_GetExtension, sgcX509_GetCRLDistributionURIsLiest beliebige Erweiterungs-OIDs und CRL-Distribution-Point-URIs.
Erzeugung selbstsignierter ZertifikatesgcX509_CreateSelfSignedVollständige TsgcX509Options: Subject-DN, Gültigkeitsfenster, Seriennummer, CA-Flag mit Pfadlängenbeschränkung, Key Usage, Extended Key Usage, Subject Alternative Names (einschließlich IPv4-SANs).
URI Subject Alternative NamesTsgcX509Options.URIsuniformResourceIdentifier-SANs, für eine SPIFFE-artige Dienstidentität statt eines Hostnamens. Der Wert wird unverändert als IA5String-Inhalt geschrieben, übergib also eine vollständige URI.
PKCS#10-CSR-ErzeugungsgcX509_CreateCSRRFC-2986-Certificate-Signing-Request aus demselben Optionen-Record.
EC-signierte Zertifikate & CSRssgcX509_CreateSelfSignedEx, sgcX509_CreateCSREx, sgcX509_ECKey, sgcX509_RSAKeySigniere sowohl mit einem EC-Schlüssel als auch mit RSA, indem du einen von beiden in ein TsgcX509SignKey einpackst. Ein EC-Zertifikat ist etwa ein Drittel so groß wie ein RSA-Zertifikat und verifiziert weit schneller. TsgcX509Options.Hash benennt weiterhin nur den SHA, der Algorithmus folgt dem Schlüssel, sodass rhSHA256 mit einem EC-Schlüssel ecdsa-with-SHA256 bedeutet.
PEM-AusgabesgcX509_ToPEMVerpackt den erzeugten DER als speicherfertige PEM-Datei.

ML-KEM, ML-DSA & SLH-DSA

Die drei Algorithmen, die NIST im August 2024 als FIPS 203, 204 und 205 finalisiert hat, plus ein Hybrid-Combiner für die Übergangszeit.

FähigkeitFunktionHinweise
ML-KEM-SchlüsselerzeugungsgcMLKEM_GenerateKeyPair, sgcMLKEM_GenerateKeyPairFromSeedFIPS 203, früher Kyber. Drei Parametersätze: mlkem512, mlkem768, mlkem1024.
ML-KEM-EncapsulatesgcMLKEM_Encapsulate, sgcMLKEM_EncapsulateWithSeedErzeugt ein frisches 32-Byte-gemeinsames-Geheimnis und den Chiffretext, der es trägt.
ML-KEM-DecapsulatesgcMLKEM_DecapsulateSchlägt nie fehl: Ein fehlerhafter Chiffretext liefert ein pseudozufälliges Geheimnis (implizite Zurückweisung) statt eines Fehlers, sodass Timing und Fehlerverhalten nichts preisgeben.
ML-KEM-GrößensgcMLKEM_PublicKeySize, PrivateKeySize, CiphertextSize, SharedSecretSizeBytelängen pro Parametersatz, zur Pufferdimensionierung.
Hybrid X25519 + ML-KEMsgcHybrid_GenerateKeyPair, sgcHybrid_Encapsulate, sgcHybrid_DecapsulateKombiniert ein klassisches und ein Post-Quanten-gemeinsames-Geheimnis über eine KDF, sodass das Ergebnis nie schwächer ist als X25519 allein. Der empfohlene Weg, ML-KEM heute einzusetzen.
ML-DSA-SchlüsselerzeugungsgcMLDSA_GenerateKeyPair, sgcMLDSA_GenerateKeyPairFromSeedFIPS 204, früher Dilithium. Drei Parametersätze: mldsa44, mldsa65, mldsa87.
ML-DSA signieren / verifizierensgcMLDSA_Sign / sgcMLDSA_VerifyDeterministisch oder randomisiert signierend gemäß der FIPS-204-Schnittstelle, plus einem Kontext-String.
ML-DSA-GrößensgcMLDSA_PublicKeySize, PrivateKeySize, SignatureSizeBytelängen pro Parametersatz.
SLH-DSA-SchlüsselerzeugungsgcSLHDSA_GenerateKeyPair, sgcSLHDSA_GenerateKeyPairFromSeedFIPS 205, früher SPHINCS+. Zustandslose hashbasierte Signaturen: Die Sicherheit ruht allein auf der Hash-Funktion, nicht auf einer Gitter- oder Kurvenannahme.
SLH-DSA signieren / verifizierensgcSLHDSA_Sign / sgcSLHDSA_VerifySechs SHAKE-Parametersätze: slhShake128s, slhShake128f, slhShake192s, slhShake192f, slhShake256s, slhShake256f. Die s-Sätze bevorzugen kleine Signaturen, die f-Sätze bevorzugen schnelles Signieren.
SLH-DSA-Größen & BenennungsgcSLHDSA_PublicKeySize, PrivateKeySize, SignatureSize, sgcSLHDSA_ParamsNameSLH-DSA-Signaturen sind groß (7,8 KB bis 49 KB je nach Satz); den Puffer vor dem Signieren dimensionieren.

sgcCrypto beansprucht nicht, ed25519187 oder SPECK zu unterstützen. ed25519187 hat keine veröffentlichte Spezifikation, und SPECK wurde 2018 aus der ISO-Standardisierung zurückgezogen; keins von beiden ist hier implementiert.

Einmalpasswörter, Codecs & verschlüsseltes ZIP

Die Nutzschicht: Einmalcodes, die Kodierungen, auf die sich jede andere Familie stützt, und WinZip-AES-Verschlüsselung.

FähigkeitFunktionHinweise
HOTPsgcHOTPRFC 4226, zählerbasiertes Einmalpasswort.
TOTPsgcTOTP, sgcTOTP_FromBase32RFC 6238, zeitbasiertes Einmalpasswort; die Base32-Variante akzeptiert das Secret genau so, wie es eine Authenticator-App anzeigt.
TOTP-VerifikationsgcTOTP_VerifyPrüft einen eingereichten Code über ein Zeitfenster in konstanter Zeit, sodass weder das Ergebnis noch seine Position über Timing durchsickert. Verhindert Replay nicht selbst; der Aufrufer verfolgt bereits genutzte Codes.
Konstantzeitiger VergleichsgcConstantTimeEqualsWird in der gesamten Bibliothek für Tag- und MAC-Vergleiche verwendet.
Sicheres NullsetzensgcSecureZeroÜberschreibt einen Byte-Puffer, damit Schlüsselmaterial nicht im Speicher verweilt.
HexsgcHexEncode / sgcHexDecodeKleinbuchstaben-Hex, Groß-/Kleinschreibung wird beim Decodieren ignoriert.
Base64urlsgcBase64UrlEncode / sgcBase64UrlDecodeRFC 4648 Abschnitt 5, ungepolstert, die Kodierung, die JWT und JOSE verwenden.
Base32sgcBase32Encode / sgcBase32DecodeRFC 4648 Abschnitt 6, die Kodierung, die TOTP-Secrets und Authenticator-Apps verwenden.
WinZip-AES-SchlüsselableitungsgcZipAE2_DeriveKeysPBKDF2-basierter Schlüssel, Authentifizierungsschlüssel und Passwort-Verifier aus einem Passwort und Salt.
WinZip-AES verschlüsseln / entschlüsselnsgcZipAE2_Encrypt / sgcZipAE2_DecryptAE-1 und AE-2, AES-128/192/256, Salt-Größe pro Eintrag über TsgcZipAESStrength.
WinZip-EintragspackungsgcZipAE2_PackEntry / sgcZipAE2_UnpackEntryKombiniert Salt, Verifier, Chiffretext und Authentifizierungscode zum Layout auf der Festplatte.
WinZip-Extra-FeldsgcZipAE2_BuildExtraField / sgcZipAE2_ParseExtraFieldDas Extra-Feld 0x9901, das einen ZIP-Eintrag als AES-verschlüsselt markiert.
Legacy-Hashes (nur Interop)sgcMD4, sgcMD5, sgcHMAC_MD5Erhalten zum Lesen älterer Formate und Protokolle; nicht in einem neuen Design verwenden.
Legacy-Chiffre (nur Interop)sgcDES_EncryptECB / sgcDES_DecryptECB, sgcDES_NTLM7to8DES-ECB und der DES-basierte NTLM-Schlüsselerweiterungsschritt, beide zurückgezogen (FIPS 46-3), erhalten für Legacy-Interoperabilität.
Sichere ZufallsbytessgcRandomBytes / sgcRandomFillWindows CryptoAPI unter MSWINDOWS, /dev/urandom anderswo, ein Aufruf für beide Fälle.

Wo sgcCrypto läuft

Was unterstützt wird, präzise angegeben.

BereichDetail
BetriebssystemKein MSWINDOWS-Guard und keine andere Plattformsperre umschließt SGC_CRYPTO in sgcVer.inc. Alle 43 Units kompilieren für Win32, Win64, Linux64, macOS, iOS und Android.
ZufallszahlenquelleDie eine plattformbewusste Unit, sgcCrypto_Random, wählt pro Ziel ein CSPRNG: die Windows CryptoAPI unter MSWINDOWS, /dev/urandom auf POSIX-Zielen, hinter demselben sgcRandomBytes-Aufruf.
DelphiDelphi 7 bis RAD Studio 13 Florence. Es wird nirgends ein nativer 64-Bit-Integer-Typ vorausgesetzt: sgcCrypto_Int64 und der Typ TsgcBigInt in sgcCrypto_BigInteger emulieren die Arithmetik, die die Hashes, Kurven und Post-Quanten-Units brauchen.
C++ BuilderC++ Builder über die generierten Header, derselbe Quellbaum.
Design-Time-FootprintKeiner. Es gibt keine sgcCrypto_Reg.pas, nichts wird per RegisterComponents registriert, und keine Unit erscheint auf einer Palettenseite.
AbhängigkeitenKeine OpenSSL-Anbindung, keine externe DLL. Jede Primitive ist direkt in Object Pascal innerhalb der Unit implementiert, die du referenzierst.
QuellcodeVollständiger Object-Pascal-Quellcode in jeder kostenpflichtigen Stufe, sowie in den Editionspaketen, die sgcCrypto bereits enthalten.
WeiterverbreitungVon dir gebaute Binärdateien sind lizenzgebührenfrei, ohne Pro-Platz- oder Pro-Server-Laufzeitgebühr.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Entwickle mit sgcCrypto

Lade die kostenlose Testversion herunter und rufe eine Funktion auf, keine Komponente nötig.