Matryca funkcji sgcCrypto — AES, SHA-3, Ed25519, X.509, ML-KEM | eSeGeCe

sgcCrypto Matryca funkcji

Wszystko, co robi sgcCrypto, zestawione dla 43 jednostek na dysku. Nie ma tu komponentów ani właściwości w trybie projektowania: każdy wiersz poniżej to funkcja lub procedura wywoływana bezpośrednio. Pełny kod źródłowy jest dołączony do każdej licencji. Poniższe kotwice prowadzą do sześciu rodzin możliwości, do których należą jednostki.

sgcCrypto nie ma komponentów. 43 jednostki poniżej eksportują zwykłe funkcje, nie ma tu klasy Tsgc* ani jednostki sgcCrypto_Reg.pas. Dodaj jednostkę do sekcji uses i wywołaj funkcję.

Już dołączony. sgcCrypto jest dołączony bezpłatnie do sgcWebSockets Standard, Professional i Enterprise, a także do All-Access. Jest też sprzedawany samodzielnie (z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core) dla klientów posiadających wyłącznie Core. Zobacz Cennik.

Symetryczna

AES, ChaCha20, Poly1305, 5 jednostek

Skróty i KDF

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

Podpisy i wymiana kluczy

Ed25519, X25519, RSA, 10 jednostek

PKI

X.509, ASN.1, CSR, 5 jednostek

Post-kwantowa

ML-KEM, ML-DSA, SLH-DSA, 6 jednostek

OTP i inne

HOTP/TOTP, kodowanie, ZIP AES, 6 jednostek

43 jednostki źródłowe

Każda jednostka sgcCrypto_*.pas pod sgcWebSockets/delphi/Source/, pogrupowana według rodziny.

JednostkaRodzinaCo robi
sgcCrypto_AESSymetrycznaAES-CBC, AES-GCM (AEAD), AES-CTR.
sgcCrypto_ModesSymetrycznaAES-ECB, OFB, CFB, CTS oraz Key Wrap / Key Wrap with Padding.
sgcCrypto_CMACSymetrycznaUwierzytelnianie wiadomości AES-CMAC.
sgcCrypto_ChaChaSymetrycznaChaCha20, XChaCha20, Salsa20, XSalsa20.
sgcCrypto_Poly1305SymetrycznaMAC Poly1305, AEAD ChaCha20-Poly1305 i XChaCha20-Poly1305.
sgcCrypto_SHA2Skróty i KDFSHA-1, SHA-224, SHA-256, SHA-384, SHA-512.
sgcCrypto_KeccakSkróty i KDFSHA-3, SHAKE128/256, cSHAKE, KMAC.
sgcCrypto_Blake2bSkróty i KDFBLAKE2b, kluczowany lub nie.
sgcCrypto_Blake2sSkróty i KDFBLAKE2s, kluczowany lub nie.
sgcCrypto_HMACSkróty i KDFHMAC-SHA1/256/384/512.
sgcCrypto_KDFSkróty i KDFPBKDF2, wybieralny skrót.
sgcCrypto_HKDFSkróty i KDFHKDF extract-and-expand.
sgcCrypto_ScryptSkróty i KDFscrypt, KDF wymagający dużo pamięci.
sgcCrypto_Argon2Skróty i KDFArgon2d, Argon2i, Argon2id.
sgcCrypto_SipHashSkróty i KDFKluczowany skrót SipHash-2-4.
sgcCrypto_TLSHSkróty i KDFRozmyty skrót TLSH i różnica podobieństwa.
sgcCrypto_Ed25519Podpisy i wymiana kluczyPodpis / weryfikacja Ed25519.
sgcCrypto_X25519Podpisy i wymiana kluczyDiffie-Hellman X25519.
sgcCrypto_Ed448Podpisy i wymiana kluczyPodpis / weryfikacja Ed448.
sgcCrypto_X448Podpisy i wymiana kluczyDiffie-Hellman X448.
sgcCrypto_GF448Podpisy i wymiana kluczyWewnętrzna arytmetyka ciała GF(2^448-2^224-1) dla Ed448/X448.
sgcCrypto_ECCurvesPodpisy i wymiana kluczyECDSA / ECDH nad secp256k1 i Brainpool P256r1/P384r1/P512r1.
sgcCrypto_ECPodpisy i wymiana kluczyOgólny podpis/weryfikacja EC jako JWS (ES256/384/512), ECDH.
sgcCrypto_RSAPodpisy i wymiana kluczyPodpis RSA PKCS#1 v1.5, weryfikacja PKCS#1 v1.5 / PSS, z PEM lub surowych danych.
sgcCrypto_RSA_KeysPodpisy i wymiana kluczyGenerowanie kluczy RSA, OAEP, PSS, podpis/weryfikacja PKCS#1, eksport DER/PEM.
sgcCrypto_ECIESPodpisy i wymiana kluczyHybrydowe szyfrowanie ECIES seal / open nad X25519.
sgcCrypto_ASN1PKICzytnik DER, kodek PEM, parsowanie kluczy PKCS#1/SEC 1.
sgcCrypto_DERPKIPrymitywy zapisu DER.
sgcCrypto_BigIntegerPKIWewnętrzna arytmetyka liczb całkowitych o dowolnej precyzji.
sgcCrypto_X509PKIParsowanie X.509, weryfikacja, łańcuch, CRL, unieważnienie.
sgcCrypto_X509_GenPKIGenerowanie certyfikatu samopodpisanego i CSR PKCS#10.
sgcCrypto_MLKEMPost-kwantowaEnkapsulacja kluczy ML-KEM (FIPS 203), 3 zestawy parametrów.
sgcCrypto_MLKEM_PolyPost-kwantowaWewnętrzna arytmetyka pierścienia wielomianów za ML-KEM.
sgcCrypto_MLKEM_HybridPost-kwantowaHybrydowa enkapsulacja kluczy X25519 + ML-KEM.
sgcCrypto_MLDSAPost-kwantowaPodpisy cyfrowe ML-DSA (FIPS 204), 3 zestawy parametrów.
sgcCrypto_MLDSA_PolyPost-kwantowaWewnętrzna arytmetyka pierścienia wielomianów za ML-DSA.
sgcCrypto_SLHDSAPost-kwantowaPodpisy SLH-DSA (FIPS 205), 6 zestawów parametrów SHAKE.
sgcCrypto_OTPOTP i inneHOTP, TOTP, okno weryfikacji w stałym czasie.
sgcCrypto_EncodingOTP i innePorównanie w stałym czasie, bezpieczne zerowanie, hex/Base64url/Base32.
sgcCrypto_Zip_AE2OTP i inneSzyfrowanie WinZip AES dla wpisów ZIP, AE-1 / AE-2.
sgcCrypto_LegacyOTP i inneMD4, MD5, HMAC-MD5, DES-ECB, wyłącznie dla współpracy wstecznej.
sgcCrypto_RandomOTP i inneWieloplatformowy CSPRNG.
sgcCrypto_Int64OTP i inneWewnętrzna emulacja liczby 64-bitowej dla Delphi 7.

Szyfrowanie i MAC

AES w trybach faktycznie używanych w kodzie produkcyjnym, plus rodzina AEAD ChaCha20/Poly1305.

MożliwośćFunkcjaUwagi
AES-CBCsgcAES_CBC_Encrypt / sgcAES_CBC_DecryptWypełnienie PKCS#7, 16-bajtowy IV. Długość klucza wybiera szyfr: 16/24/32 bajty = AES-128/192/256.
AES-GCM (AEAD)sgcAES_GCM_Encrypt / sgcAES_GCM_DecryptZalecany 12-bajtowy IV. 16-bajtowy znacznik, porównywany w stałym czasie; deszyfrowanie zwraca False i pusty jawny tekst przy nieudanej weryfikacji znacznika.
AES-CTRsgcAES_CTRAES-CM w stylu SRTP (RFC 3711). Wywołanie symetryczne, bez wypełnienia, 128-bitowy licznik big-endian.
AES-ECBsgcAES_ECB_Encrypt / sgcAES_ECB_DecryptBez IV, bez łańcuchowania. Dołączony dla współpracy z formatami, które go wymagają.
AES-OFB / AES-CFBsgcAES_OFB, sgcAES_CFB_Encrypt / sgcAES_CFB_DecryptTryby sprzężenia zwrotnego w stylu szyfru strumieniowego.
AES-CTSsgcAES_CTS_Encrypt / sgcAES_CTS_DecryptCiphertext stealing: szyfruje dane niebędące wielokrotnością rozmiaru bloku bez narzutu wypełnienia.
AES Key WrapsgcAES_KeyWrap / sgcAES_KeyUnwrapRFC 3394, do owijania jednego klucza pod innym.
AES Key Wrap with PaddingsgcAES_KeyWrapPad / sgcAES_KeyUnwrapPadRFC 5649, dla materiału klucza niebędącego wielokrotnością 8 bajtów.
AES-CMACsgcAES_CMAC / sgcAES_CMAC_VerifyKod uwierzytelniania wiadomości RFC 4493.
Prymitywy blokowe niskiego poziomusgcAES_ExpandKey, sgcAES_EncryptBlock, sgcAES_DecryptBlockUjawnione dla powyższych jednostek trybów i MAC; wywołuj je bezpośrednio tylko do zbudowania trybu, którego jeszcze nie ma.
ChaCha20sgcChaCha20RFC 8439, 96-bitowy nonce, 32-bitowy licznik.
XChaCha20sgcXChaCha20192-bitowy rozszerzony nonce, bezpieczny do losowego generowania nonce na dużą skalę.
Salsa20 / XSalsa20sgcSalsa20 / sgcXSalsa20Poprzednia rodzina szyfrów strumieniowych, oba rozmiary nonce.
Wyprowadzanie podkluczasgcHChaCha20 / sgcHSalsa20To, czego warianty X używają wewnętrznie do wyprowadzenia podklucza z pierwszych 16 bajtów nonce.
MAC Poly1305sgcPoly1305 / sgcPoly1305_VerifyJednorazowy uwierzytelniacz, RFC 8439. Nigdy nie używaj ponownie klucza Poly1305.
AEAD ChaCha20-Poly1305sgcChaCha20Poly1305_Encrypt / _DecryptSzyfr AEAD stojący za drugim zestawem szyfrów TLS 1.3 i za SSH.
AEAD XChaCha20-Poly1305sgcXChaCha20Poly1305_Encrypt / _DecryptTen sam AEAD, 192-bitowy nonce, konstrukcja, którą libsodium nazywa crypto_aead_xchacha20poly1305_ietf.

Skróty, MAC i haszowanie haseł

Każda popularna rodzina skrótów, plus PBKDF2, HKDF, scrypt i wszystkie trzy warianty Argon2.

MożliwośćFunkcjaUwagi
SHA-1 / SHA-2sgcSHA1, sgcSHA224, sgcSHA256, sgcSHA384, sgcSHA512FIPS 180-4. SHA-1 zachowany dla współpracy wstecznej, niezalecany do nowych podpisów.
SHA-3sgcSHA3_224 / _256 / _384 / _512FIPS 202, gąbka Keccak, strukturalnie niezależna od SHA-2.
SHAKE128 / SHAKE256sgcSHAKE128 / sgcSHAKE256Funkcje o rozszerzalnym wyjściu: żądaj dowolnej długości skrótu.
cSHAKE128 / cSHAKE256sgcCSHAKE128 / sgcCSHAKE256SHAKE z separacją domen, NIST SP 800-185, podstawa KMAC.
KMAC128 / KMAC256sgcKMAC128 / sgcKMAC256MAC oparty na Keccak, ze zmienną długością wyjścia.
BLAKE2bsgcBlake2b / sgcBlake2b_KeyedRFC 7693, skróty do 64 bajtów, wbudowane kluczowanie (bez osobnego HMAC).
BLAKE2ssgcBlake2s / sgcBlake2s_KeyedRFC 7693, skróty do 32 bajtów, dostrojone do platform 32-bitowych.
Skróty strumieniowesgcBlake2b_Init/_Update/_Final, odpowiadające wywołania dla Keccak/Blake2sDo haszowania danych zbyt dużych, by trzymać je naraz w pamięci.
HMACsgcHMAC_SHA1 / _SHA256 / _SHA384 / _SHA512Kluczowane haszowanie RFC 2104 nad rodziną SHA-1/2.
PBKDF2sgcPBKDF2, sgcPBKDF2_SHA1 / _SHA256 / _SHA512RFC 8018. Tylko umiarkowanie wymagający pamięci; preferuj Argon2id lub scrypt, gdy masz wybór.
HKDFsgcHKDF_Extract_SHA256 / _SHA384, sgcHKDF_Expand_SHA256 / _SHA384, sgcHKDF_SHA256 / _SHA384RFC 5869, wyprowadzanie kluczy extract-then-expand, standardowy sposób zamiany współdzielonego sekretu na kilka kluczy.
scryptsgcScryptRFC 7914, wymagający dużo pamięci, znacznie lepiej odporny na atak GPU/ASIC niż PBKDF2.
Argon2sgcArgon2 (d / i / id), wygodny opakowujący sgcArgon2idRFC 9106, zwycięzca Password Hashing Competition. Pełny interfejs z opcjonalnym sekretem (pieprzem) i danymi powiązanymi.
SipHash-2-4sgcSipHash24 / sgcSipHash24_ValueSzybka kluczowana funkcja pseudolosowa do kluczy tablic mieszających, odporna na atak hash-flooding.
Rozmyty skrót TLSHsgcTLSH, sgcTLSH_Init/_Update/_FinalSkrót wrażliwy na lokalność do wykrywania niemal identycznych plików, nie skrót kryptograficzny.
Wynik podobieństwa TLSHsgcTLSH_DiffOdległość między dwoma skrótami TLSH; niższa wartość oznacza większe podobieństwo.

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

Podpisuj, weryfikuj i wyprowadzaj sekrety współdzielone w pięciu odrębnych rodzinach krzywych plus RSA.

MożliwośćFunkcjaUwagi
Podpis / weryfikacja Ed25519sgcEd25519_Sign / sgcEd25519_VerifyRFC 8032. 32-bajtowy klucz publiczny, 64-bajtowy podpis. Weryfikacja odrzuca punkty niekanoniczne oraz S >= L zgodnie z sekcją 5.1.7.
Wymiana kluczy X25519sgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecretDiffie-Hellman RFC 7748 nad Curve25519.
Podpis / weryfikacja Ed448sgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_VerifyRFC 8032, 448-bitowa krzywa EdDSA (Goldilocks).
Wymiana kluczy X448sgcX448, sgcX448_PublicKey, sgcX448_SharedSecretDiffie-Hellman RFC 7748 nad Curve448.
secp256k1sgcECDSA_SignHash / VerifyHash z eccSecp256k1Krzywa Bitcoin/Ethereum, SEC 2, w sgcCrypto_ECCurves.
Brainpool P256r1 / P384r1 / P512r1te same funkcje z eccBrainpoolP256r1 / P384r1 / P512r1RFC 5639, powszechne w profilach eIDAS UE i rządowych.
Deterministyczny nonce ECDSAwbudowany w sgcECDSA_SignHashRFC 6979: nonce jest wyprowadzany z klucza prywatnego i wiadomości, bez trybu awarii RNG.
ECDH (secp256k1 / Brainpool)sgcECDH_SharedSecretSekret współdzielony nad tymi samymi czterema krzywymi.
Kompresja punktusgcEC_Compress / sgcEC_DecompressPrzechowuj lub przesyłaj krótszą, skompresowaną postać klucza publicznego.
EC jako JWS (ES256/384/512)sgcECDSA_SignJWS / sgcECDSA_VerifyJWSKrzywa wybierana automatycznie na podstawie żądanej długości bitowej, podpis/weryfikacja bezpośrednio z klucza PEM, bliźniak zorientowany na JOSE dla ECCurves.
Ogólne ECDHsgcECDHSekret współdzielony z surowego klucza prywatnego i publicznego punktu drugiej strony.
Weryfikacja ECDSA raw / DERsgcECDSA_VerifyRaw / sgcECDSA_VerifyDERWeryfikacja wobec surowej krotki (Qx, Qy, r, s) lub podpisu zakodowanego w DER.
Podpis RSA (PKCS#1 v1.5)sgcRSA_SignPKCS1Z klucza prywatnego PEM, skrót SHA-1/256/384/512.
Weryfikacja RSA (PKCS#1 v1.5 / PSS)sgcRSA_VerifyPKCS1, sgcRSA_VerifyPSS, oraz warianty _Raw nad modułem/wykładnikiemRFC 8017. Weryfikacja działa z klucza PEM albo surowego modułu i wykładnika, bez potrzeby budowania obiektu klucza.
Generowanie klucza RSAsgcRSA_GenerateKeyDowolna żądana długość bitowa, test pierwszości Millera-Rabina.
Szyfrowanie RSA-OAEPsgcRSA_OAEP_Encrypt / sgcRSA_OAEP_DecryptOptymalne asymetryczne wypełnienie szyfrujące RFC 8017.
Podpisywanie RSA-PSS / PKCS#1sgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / VerifyPodpis bezpośrednio z wygenerowanego TsgcRSAPrivateKey.
Eksport klucza RSAsgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, odpowiadające wywołania DERKodowania PKCS#1 i SubjectPublicKeyInfo.
ECIES seal / opensgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_OpenHybrydowe szyfrowanie do klucza publicznego X25519: efemeryczny ECDH plus AEAD, jedno wywołanie w każdą stronę.

Certyfikaty X.509 i ASN.1

Odczytaj certyfikat wystawiony przez kogoś innego albo wygeneruj własny, z koderem i dekoderem DER pod spodem w obu przypadkach.

MożliwośćFunkcjaUwagi
Czytnik DERsgcASN1_Read, sgcASN1_Next, sgcASN1_ContentPrzechodzi strukturę DER węzeł po węźle.
Kodek PEMsgcPEM_Decode / sgcPEM_EncodeRFC 7468, opakowanie -----BEGIN ... -----END wokół DER.
Parsowanie klucza RSAsgcASN1_ParseRSAPrivateKey / PublicKeyStruktury klucza PKCS#1 (RFC 8017).
Parsowanie klucza ECsgcASN1_ParseECPrivateKey / PublicKeyStruktury klucza SEC 1.
Zapis DER, strukturalnysgcDER_Sequence, sgcDER_Set, sgcDER_Tagged, sgcDER_ContextExplicit / ImplicitBloki budulcowe, z których składane jest każde pole certyfikatu.
Zapis DER, wartościsgcDER_Integer, sgcDER_OctetString, sgcDER_BitString, sgcDER_Boolean, sgcDER_NullKodery wartości prymitywnych.
Zapis DER, ciągi i identyfikatorysgcDER_OID, sgcDER_UTF8String, sgcDER_PrintableString, sgcDER_IA5String, sgcDER_TimeIdentyfikatory obiektów, trzy typy ciągów używane przez X.509, oraz UTCTime/GeneralizedTime.
Parsowanie certyfikatusgcX509_ParsePełna struktura certyfikatu: podmiot, wystawca, ważność, klucz publiczny, rozszerzenia.
Weryfikacja podpisu / łańcuchasgcX509_VerifySignedBy, sgcX509_VerifyChainWeryfikuje jeden certyfikat wobec wystawcy albo przechodzi i weryfikuje tablicę certyfikatów DER.
Parsowanie CRL i unieważnieniesgcX509_CRL_Parse, sgcX509_IsRevoked, sgcX509_CRL_VerifySignedByParsuje listę unieważnionych certyfikatów (CRL) i sprawdza wobec niej numer seryjny.
Formatowanie nazwsgcX509_SubjectRFC2253, sgcX509_IssuerRFC2253, sgcX509_SubjectOneLineCiągi nazwy wyróżniającej RFC 2253, do logowania i wyświetlania.
Rozszerzenia i SAN-ysgcX509_GetExtension, sgcX509_GetCRLDistributionURIsOdczyt dowolnych OID-ów rozszerzeń i adresów URI punktów dystrybucji CRL.
Generowanie certyfikatu samopodpisanegosgcX509_CreateSelfSignedPełny TsgcX509Options: DN podmiotu i wystawcy, okno ważności, numer seryjny, flaga CA z ograniczeniem długości ścieżki, użycie klucza, rozszerzone użycie klucza, alternatywne nazwy podmiotu (w tym SAN-y IPv4).
Generowanie CSR PKCS#10sgcX509_CreateCSRŻądanie podpisania certyfikatu RFC 2986 z tego samego rekordu opcji.
Wyjście PEMsgcX509_ToPEMOpakowuje wygenerowany DER jako gotowy do zapisu plik PEM.

ML-KEM, ML-DSA i SLH-DSA

Trzy algorytmy sfinalizowane przez NIST w sierpniu 2024 jako FIPS 203, 204 i 205, plus hybrydowy kombinator na okres migracji.

MożliwośćFunkcjaUwagi
Generowanie klucza ML-KEMsgcMLKEM_GenerateKeyPair, sgcMLKEM_GenerateKeyPairFromSeedFIPS 203, dawniej Kyber. Trzy zestawy parametrów: mlkem512, mlkem768, mlkem1024.
Enkapsulacja ML-KEMsgcMLKEM_Encapsulate, sgcMLKEM_EncapsulateWithSeedWytwarza świeży 32-bajtowy sekret współdzielony oraz szyfrogram, który go przenosi.
Dekapsulacja ML-KEMsgcMLKEM_DecapsulateNigdy nie zawodzi: nieprawidłowy szyfrogram daje pseudolosowy sekret (niejawne odrzucenie) zamiast błędu, więc czas działania i zachowanie błędu niczego nie ujawniają.
Rozmiary ML-KEMsgcMLKEM_PublicKeySize, PrivateKeySize, CiphertextSize, SharedSecretSizeDługości w bajtach dla każdego zestawu parametrów, do ustalania rozmiaru bufora.
Hybrydowe X25519 + ML-KEMsgcHybrid_GenerateKeyPair, sgcHybrid_Encapsulate, sgcHybrid_DecapsulateŁączy klasyczny i post-kwantowy sekret współdzielony przez KDF, więc wynik nigdy nie jest słabszy niż samo X25519. Zalecany dziś sposób wdrażania ML-KEM.
Generowanie klucza ML-DSAsgcMLDSA_GenerateKeyPair, sgcMLDSA_GenerateKeyPairFromSeedFIPS 204, dawniej Dilithium. Trzy zestawy parametrów: mldsa44, mldsa65, mldsa87.
Podpis / weryfikacja ML-DSAsgcMLDSA_Sign / sgcMLDSA_VerifyPodpisywanie deterministyczne lub losowe zgodnie z interfejsem FIPS 204, plus ciąg kontekstu.
Rozmiary ML-DSAsgcMLDSA_PublicKeySize, PrivateKeySize, SignatureSizeDługości w bajtach dla każdego zestawu parametrów.
Generowanie klucza SLH-DSAsgcSLHDSA_GenerateKeyPair, sgcSLHDSA_GenerateKeyPairFromSeedFIPS 205, dawniej SPHINCS+. Bezstanowe podpisy oparte na skrótach: bezpieczeństwo opiera się wyłącznie na funkcji skrótu, nie na założeniu o kratach czy krzywej.
Podpis / weryfikacja SLH-DSAsgcSLHDSA_Sign / sgcSLHDSA_VerifySześć zestawów parametrów SHAKE: slhShake128s, slhShake128f, slhShake192s, slhShake192f, slhShake256s, slhShake256f. Zestawy s faworyzują małe podpisy, zestawy f szybkie podpisywanie.
Rozmiary i nazewnictwo SLH-DSAsgcSLHDSA_PublicKeySize, PrivateKeySize, SignatureSize, sgcSLHDSA_ParamsNamePodpisy SLH-DSA są duże (od 7,8 KB do 49 KB w zależności od zestawu); ustal rozmiar bufora przed podpisaniem.

sgcCrypto nie oferuje ed25519187 ani SPECK. ed25519187 nie ma opublikowanej specyfikacji, a SPECK zostało wycofane ze standaryzacji ISO w 2018 roku; żadne z nich nie jest tutaj zaimplementowane.

Hasła jednorazowe, kodeki i szyfrowany ZIP

Warstwa narzędziowa: kody jednorazowe, kodowania wykorzystywane przez pozostałe rodziny oraz szyfrowanie WinZip AES.

MożliwośćFunkcjaUwagi
HOTPsgcHOTPRFC 4226, hasło jednorazowe oparte na liczniku.
TOTPsgcTOTP, sgcTOTP_FromBase32RFC 6238, hasło jednorazowe oparte na czasie; wariant Base32 przyjmuje sekret dokładnie tak, jak wyświetla go aplikacja uwierzytelniająca.
Weryfikacja TOTPsgcTOTP_VerifySprawdza podany kod w oknie kroków w stałym czasie, więc ani wynik, ani jego pozycja nie ujawniają się przez czas działania. Sama w sobie nie zatrzymuje powtórek; śledzenie użytych kodów należy do wywołującego.
Porównanie w stałym czasiesgcConstantTimeEqualsUżywane w całej bibliotece do porównań znaczników i MAC.
Bezpieczne zerowaniesgcSecureZeroNadpisuje bufor bajtów, tak by materiał klucza nie pozostawał w pamięci.
HexsgcHexEncode / sgcHexDecodeHex małymi literami, dekodowanie niewrażliwe na wielkość liter.
Base64urlsgcBase64UrlEncode / sgcBase64UrlDecodeRFC 4648 sekcja 5, bez wypełnienia, kodowanie używane przez JWT i JOSE.
Base32sgcBase32Encode / sgcBase32DecodeRFC 4648 sekcja 6, kodowanie używane przez sekrety TOTP i aplikacje uwierzytelniające.
Wyprowadzanie kluczy WinZip AESsgcZipAE2_DeriveKeysKlucz oparty na PBKDF2, klucz uwierzytelniający i weryfikator hasła z hasła i soli.
Szyfrowanie / deszyfrowanie WinZip AESsgcZipAE2_Encrypt / sgcZipAE2_DecryptAE-1 i AE-2, AES-128/192/256, rozmiar soli na wpis przez TsgcZipAESStrength.
Pakowanie wpisu WinZipsgcZipAE2_PackEntry / sgcZipAE2_UnpackEntryŁączy sól, weryfikator, szyfrogram i kod uwierzytelniający w układ na dysku.
Dodatkowe pole WinZipsgcZipAE2_BuildExtraField / sgcZipAE2_ParseExtraFieldPole dodatkowe 0x9901, które oznacza wpis ZIP jako zaszyfrowany AES.
Starsze skróty (tylko interoperacyjność)sgcMD4, sgcMD5, sgcHMAC_MD5Zachowane do odczytu starszych formatów i protokołów; nie używać w nowych projektach.
Starszy szyfr (tylko interoperacyjność)sgcDES_EncryptECB / sgcDES_DecryptECB, sgcDES_NTLM7to8DES-ECB oraz oparty na DES krok ekspansji klucza NTLM, oba wycofane (FIPS 46-3), zachowane dla współpracy wstecznej.
Bezpieczne losowe bajtysgcRandomBytes / sgcRandomFillWindows CryptoAPI pod MSWINDOWS, /dev/urandom gdzie indziej, jedno wywołanie w obu przypadkach.

Gdzie działa sgcCrypto

Co jest obsługiwane, podane precyzyjnie.

ObszarSzczegóły
System operacyjnyŻadna osłona MSWINDOWS ani inna osłona platformowa nie otacza SGC_CRYPTO w sgcVer.inc. Wszystkie 43 jednostki kompilują się dla Win32, Win64, Linux64, macOS, iOS i Android.
Źródło liczb losowychJedyna jednostka świadoma platformy, sgcCrypto_Random, wybiera CSPRNG dla celu: Windows CryptoAPI pod MSWINDOWS, /dev/urandom na celach POSIX, za tym samym wywołaniem sgcRandomBytes.
DelphiDelphi 7 do RAD Studio 13 Florence. Nigdzie nie zakłada się natywnego typu 64-bitowego: sgcCrypto_Int64 oraz typ TsgcBigInt w sgcCrypto_BigInteger emulują arytmetykę potrzebną skrótom, krzywym i jednostkom post-kwantowym.
C++ BuilderC++ Builder poprzez wygenerowane nagłówki, to samo drzewo źródeł.
Ślad w trybie projektowaniaBrak. Nie ma jednostki sgcCrypto_Reg.pas, nic nie jest rejestrowane przez RegisterComponents, i żadna jednostka nie pojawia się na stronie palety komponentów.
ZależnościBrak powiązania z OpenSSL, brak zewnętrznego DLL. Każdy prymityw jest zaimplementowany bezpośrednio w Object Pascal wewnątrz jednostki, do której się odwołujesz.
Kod źródłowyPełny kod źródłowy Object Pascal w każdej płatnej wersji oraz w pakietach edycji, które już zawierają sgcCrypto.
RedystrybucjaBudowane przez Ciebie binaria są wolne od opłat licencyjnych, bez opłaty za stanowisko czy serwer w środowisku uruchomieniowym.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Twórz z sgcCrypto

Pobierz bezpłatną wersję próbną i wywołaj funkcję, komponent nie jest wymagany.