sgcCrypto Özellik Matrisi

sgcCrypto'nun yaptığı her şey, diskteki 43 birim üzerinden eşlenmiş. Burada bileşen ve tasarım zamanı özelliği yoktur: aşağıdaki her satır, doğrudan çağırdığınız bir fonksiyon veya yordamdır. Tam kaynak kodu her lisansla gelir. Aşağıdaki bağlantılar sizi birimlerin ait olduğu altı yetenek ailesine ve aynı paketin bunların üzerine kurduğu TLS 1.3 ve TLS 1.2 motoruna götürür.

sgcCrypto'nun bileşeni yoktur. Aşağıdaki 43 birim sade fonksiyonlar dışa aktarır, bir Tsgc* sınıfı ve bir sgcCrypto_Reg.pas yoktur. uses cümlenize bir birim ekleyin ve fonksiyonu çağırın.

Zaten dahildir. sgcCrypto, sgcWebSockets Standard, Professional ve Enterprise'ın içinde, ayrıca All-Access'in içinde ücretsiz gelir. Yalnızca Core'a sahip müşteriler için de bağımsız olarak satılır (sgcWebSockets Core çalışma zamanı pakete dahildir). Bkz. Fiyatlandırma.

Simetrik

AES, CCM, ChaCha20, Poly1305, 5 birim

Hashing ve KDF

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

İmzalar ve anahtar değişimi

Ed25519, X25519, Schnorr, RSA, 10 birim

PKI

X.509, ASN.1, RSA ve EC CSR, 5 birim

Kuantum sonrası

ML-KEM, ML-DSA, SLH-DSA, 6 birim

OTP ve diğer

HOTP/TOTP, kodlama, ZIP AES, 6 birim

TLS 1.3 ve 1.2 motoru

iohNativeTLS, X25519MLKEM768, saf Pascal

43 Kaynak Birimi

sgcWebSockets/delphi/Source/ altındaki her sgcCrypto_*.pas birimi, aileye göre gruplanmış.

BirimAileNe yapar
sgcCrypto_AESSimetrikAES-CBC, AES-GCM (AEAD), AES-CTR.
sgcCrypto_ModesSimetrikAES-ECB, OFB, CFB, CTS, CCM (AEAD), Key Wrap / Padding'li Key Wrap ve yedi dolgu şeması.
sgcCrypto_CMACSimetrikAES-CMAC ve AES-GMAC mesaj kimlik doğrulaması.
sgcCrypto_ChaChaSimetrikChaCha20, XChaCha20, Salsa20, XSalsa20.
sgcCrypto_Poly1305SimetrikPoly1305 MAC, ChaCha20-Poly1305 ve XChaCha20-Poly1305 AEAD.
sgcCrypto_SHA2Hashing ve KDFSHA-1, SHA-224, SHA-256, SHA-384, SHA-512.
sgcCrypto_KeccakHashing ve KDFSHA-3, SHAKE128/256, cSHAKE, KMAC.
sgcCrypto_Blake2bHashing ve KDFBLAKE2b, anahtarlı veya anahtarsız.
sgcCrypto_Blake2sHashing ve KDFBLAKE2s, anahtarlı veya anahtarsız.
sgcCrypto_HMACHashing ve KDFHMAC-SHA1/256/384/512.
sgcCrypto_KDFHashing ve KDFPBKDF2, KDF1, KDF2 ve X9.63, seçilebilir hash.
sgcCrypto_HKDFHashing ve KDFHKDF extract-and-expand.
sgcCrypto_ScryptHashing ve KDFBellek zorlu scrypt KDF.
sgcCrypto_Argon2Hashing ve KDFArgon2d, Argon2i, Argon2id.
sgcCrypto_SipHashHashing ve KDFSipHash-2-4 anahtarlı hash.
sgcCrypto_TLSHHashing ve KDFTLSH bulanık hash ve benzerlik diff'i.
sgcCrypto_Ed25519İmzalar ve anahtar değişimiEd25519 imzala / doğrula.
sgcCrypto_X25519İmzalar ve anahtar değişimiX25519 Diffie-Hellman.
sgcCrypto_Ed448İmzalar ve anahtar değişimiEd448 imzala / doğrula.
sgcCrypto_X448İmzalar ve anahtar değişimiX448 Diffie-Hellman.
sgcCrypto_GF448İmzalar ve anahtar değişimiEd448/X448 için dahili GF(2^448-2^224-1) alan aritmetiği.
sgcCrypto_ECCurvesİmzalar ve anahtar değişimisecp256k1, Brainpool P256r1/P384r1/P512r1 ve NIST P-256/P-384/P-521 üzerinde ECDSA / ECDH, DER imzaları, anahtar dışa/içe aktarımı ve BIP-340 Schnorr.
sgcCrypto_ECİmzalar ve anahtar değişimiJWS olarak genel EC imzala/doğrula (ES256/384/512), ECDH.
sgcCrypto_RSAİmzalar ve anahtar değişimiPEM veya ham anahtardan RSA PKCS#1 v1.5 imzala, PKCS#1 v1.5 / PSS doğrula.
sgcCrypto_RSA_Keysİmzalar ve anahtar değişimiRSA anahtar üretimi, OAEP (bağımsız MGF1 hash'iyle), PSS, PKCS#1 v1.5 imzala/doğrula/şifrele/çöz, PKCS#1 ve PKCS#8 DER/PEM dışa ve içe aktarımı.
sgcCrypto_ECIESİmzalar ve anahtar değişimiX25519 üzerinde ECIES mühürleme / açma hibrit şifrelemesi.
sgcCrypto_ASN1PKIDER okuyucu, PEM kodeği, PKCS#1/SEC 1 anahtar ayrıştırma.
sgcCrypto_DERPKIDER yazıcı ilkelleri.
sgcCrypto_BigIntegerPKIDahili keyfi hassasiyetli tam sayı aritmetiği.
sgcCrypto_X509PKIX.509 ayrıştır, doğrula, pathLenConstraint ve nameConstraints ile zincirle, CSR doğrula, CRL, iptal. RSA, EC, Ed25519, ML-DSA, SLH-DSA ve ML-KEM genel anahtarlarını okur.
sgcCrypto_X509_GenPKIKendinden imzalı, CA tarafından yayınlanan ve PKCS#10 CSR üretimi; RSA, EC, ML-DSA veya SLH-DSA ile imzalı, URI ve IPv6 konu alternatif adları ve nameConstraints ile.
sgcCrypto_MLKEMKuantum sonrasıML-KEM anahtar kapsülleme (FIPS 203), 3 parametre seti; SubjectPublicKeyInfo, PKCS#8 ve PEM anahtar içe ve dışa aktarımı ile.
sgcCrypto_MLKEM_PolyKuantum sonrasıML-KEM'in arkasındaki dahili polinom halka aritmetiği.
sgcCrypto_MLKEM_HybridKuantum sonrasıHibrit X25519 + ML-KEM anahtar kapsülleme, X-Wing ve RFC 10024 TLS 1.3 hibrit anahtar paylaşımları.
sgcCrypto_MLDSAKuantum sonrasıML-DSA dijital imzalar (FIPS 204), 3 parametre seti; SubjectPublicKeyInfo, PKCS#8 ve PEM anahtar içe ve dışa aktarımı ile.
sgcCrypto_MLDSA_PolyKuantum sonrasıML-DSA'nın arkasındaki dahili polinom halka aritmetiği.
sgcCrypto_SLHDSAKuantum sonrasıSLH-DSA imzaları (FIPS 205), 6 SHAKE parametre seti; SubjectPublicKeyInfo, PKCS#8 ve PEM anahtar içe ve dışa aktarımı ile.
sgcCrypto_OTPOTP ve diğerHOTP, TOTP, sabit zamanlı doğrulama penceresi.
sgcCrypto_EncodingOTP ve diğerSabit zamanlı karşılaştırma, güvenli sıfırlama, hex/Base64url/Base32.
sgcCrypto_Zip_AE2OTP ve diğerZIP girdileri için WinZip AES şifrelemesi, AE-1 / AE-2.
sgcCrypto_LegacyOTP ve diğerMD4, MD5, HMAC-MD5, DES-ECB, RIPEMD-160 ve HMAC-RIPEMD160, yalnızca birlikte çalışabilirlik için.
sgcCrypto_RandomOTP ve diğerPlatformlar arası CSPRNG.
sgcCrypto_Int64OTP ve diğerDelphi 7 için dahili 64 bit tam sayı emülasyonu.

Şifreleme ve MAC'ler

Üretim kodunun gerçekte kullandığı modlarda AES, artı ChaCha20/Poly1305 AEAD ailesi.

YetenekFonksiyonNotlar
AES-CBCsgcAES_CBC_Encrypt / sgcAES_CBC_DecryptPKCS#7 dolgusu, 16 baytlık IV. Anahtar uzunluğu şifreyi seçer: 16/24/32 bayt = AES-128/192/256.
AES-CBC, dolgusuzsgcAES_CBC_Encrypt_NoPad / sgcAES_CBC_Decrypt_NoPadJava'nın AES/CBC/NoPadding olarak yazdığı mod. Girdi zaten 16'nın katı olmalıdır; hizasız bir girdi, diğer tarafın okuyamayacağı bir şeye sessizce doldurulmak yerine bir istisna fırlatır.
AES-GCM (AEAD)sgcAES_GCM_Encrypt / sgcAES_GCM_Decrypt12 baytlık IV önerilir. Sabit zamanda karşılaştırılan 16 baytlık etiket; başarısız bir etikette decrypt False ve boş düz metin döndürür.
AES çekirdeğisgcAES_GetCore / sgcAES_SetCoreaescConstantTime varsayılandır; belleği hiçbir zaman gizli bir baytla indekslemeyen ve gizli bir bayta göre dallanmayan bitslice bir çekirdektir, bu da anahtar ve düz metin üzerindeki önbellek zamanlama kanalını kapatır. aescTable klasik tablo çekirdeğidir, veri önbelleği üzerinden bilgi sızdırır ve her ölçümde daha yavaştı, bu yüzden yalnızca yedek olarak tutulur. GCM'i doğrulayan GHASH, anahtara göre dallanmak yerine bir maske altında çarpar. Çekirdeği, herhangi bir çalışan iş parçacığı başlamadan önce, başlangıçta bir kez ayarlayın.
AES-CCM (AEAD)sgcAES_CCM_Encrypt / sgcAES_CCM_DecryptKısıtlı ve IoT yığınlarının belirttiği AEAD, Zigbee, 802.15.4, Bluetooth ve TLS CCM paketleri, çünkü yalnızca blok şifreye ihtiyaç duyar ve bir GHASH tablosuna ihtiyaç duymaz. Nonce 7 ila 13 bayt, etiket 4 ila 16 bayt, sabit zamanda doğrulanır.
AES-CTRsgcAES_CTRSRTP tarzı AES-CM (RFC 3711). Simetrik çağrı, dolgu yok, 128 bit büyük-endian sayaç.
AES-ECBsgcAES_ECB_Encrypt / sgcAES_ECB_DecryptIV yok, zincirleme yok. Bunu belirten biçimlerle birlikte çalışabilirlik için dahildir.
Dolgu şemalarısgcPad_Add / sgcPad_Remove, sgcAES_CBC_EncryptPad / DecryptPad, sgcAES_ECB_EncryptPad / DecryptPadTsgcPadding, None, PKCS#7, Zero, ANSI X9.23, ISO 7816-4, ISO 10126-2 ve TBC'yi kapsar; bu yüzden CBC ve ECB, PKCS#7'yi seçmemiş bir sistemden veri okuyup yazabilir. sgcPad_Remove, her tür bozuk dolgu için aynı yoldan False döndürür.
AES-OFB / AES-CFBsgcAES_OFB, sgcAES_CFB_Encrypt / sgcAES_CFB_DecryptAkış şifresi tarzı geri besleme modları.
AES-CTSsgcAES_CTS_Encrypt / sgcAES_CTS_DecryptŞifreli metin çalma: blok boyutunun katı olmayan veriyi dolgu ek yükü olmadan şifreler.
AES Key WrapsgcAES_KeyWrap / sgcAES_KeyUnwrapRFC 3394, bir anahtarı başka bir anahtar altında sarmak için.
Padding'li AES Key WrapsgcAES_KeyWrapPad / sgcAES_KeyUnwrapPadRFC 5649, 8 baytın katı olmayan anahtar malzemesi için.
AES-CMACsgcAES_CMAC / sgcAES_CMAC_VerifyRFC 4493 mesaj kimlik doğrulama kodu.
AES-GMACsgcAES_GMAC / sgcAES_GMAC_VerifyGCM'nin yalnızca kimlik doğrulama modu: tüm mesaj ek veri olarak taşınır, hiçbir şey şifrelenmez. IV, aynı anahtar altında asla tekrarlanmamalıdır, ve 16 baytlık etiket sabit zamanda karşılaştırılır.
Düşük seviyeli blok ilkellerisgcAES_ExpandKey, sgcAES_EncryptBlock, sgcAES_DecryptBlockYukarıdaki mod ve MAC birimleri için açığa çıkarılmıştır; henüz sağlanmayan bir modu inşa etmek için bunları doğrudan yalnızca gerektiğinde çağırın.
ChaCha20sgcChaCha20RFC 8439, 96 bit nonce, 32 bit sayaç.
XChaCha20sgcXChaCha20192 bit genişletilmiş nonce, ölçekte rastgele nonce üretimi için güvenli.
Salsa20 / XSalsa20sgcSalsa20 / sgcXSalsa20Öncül akış şifresi ailesi, her iki nonce boyutuyla.
Alt anahtar türetmesgcHChaCha20 / sgcHSalsa20X varyantlarının, ilk 16 nonce baytından bir alt anahtar türetmek için dahili olarak kullandığı şey.
Poly1305 MACsgcPoly1305 / sgcPoly1305_VerifyTek kullanımlık doğrulayıcı, RFC 8439. Bir Poly1305 anahtarını asla yeniden kullanmayın.
ChaCha20-Poly1305 AEADsgcChaCha20Poly1305_Encrypt / _DecryptTLS 1.3'ün ikinci şifre paketinin ve SSH'nin arkasındaki AEAD şifresi.
XChaCha20-Poly1305 AEADsgcXChaCha20Poly1305_Encrypt / _DecryptAynı AEAD, 192 bit nonce; libsodium'un crypto_aead_xchacha20poly1305_ietf dediği yapı.

Özetler, MAC'ler ve Parola Hashing

Her yaygın hash ailesi, artı PBKDF2, HKDF, scrypt ve üç Argon2 varyantının tamamı.

YetenekFonksiyonNotlar
SHA-1 / SHA-2sgcSHA1, sgcSHA224, sgcSHA256, sgcSHA384, sgcSHA512FIPS 180-4. SHA-1, birlikte çalışabilirlik için tutulur, yeni imzalar için önerilmez.
SHA-3sgcSHA3_224 / _256 / _384 / _512FIPS 202, Keccak süngeri, SHA-2'den yapısal olarak bağımsız.
SHAKE128 / SHAKE256sgcSHAKE128 / sgcSHAKE256Genişletilebilir çıktılı fonksiyonlar: herhangi bir özet uzunluğu isteyin.
cSHAKE128 / cSHAKE256sgcCSHAKE128 / sgcCSHAKE256Alan ayrımlı SHAKE, NIST SP 800-185, KMAC'in temeli.
KMAC128 / KMAC256sgcKMAC128 / sgcKMAC256Değişken çıktı uzunluklu Keccak tabanlı MAC.
BLAKE2bsgcBlake2b / sgcBlake2b_KeyedRFC 7693, 64 bayta kadar özetler, yerleşik anahtarlama (ayrı bir HMAC gerekmez).
BLAKE2ssgcBlake2s / sgcBlake2s_KeyedRFC 7693, 32 bayta kadar özetler, 32 bit platformlar için ayarlanmış.
Akışlı özetlersgcBlake2b_Init/_Update/_Final, Keccak/Blake2s üzerinde eşleşen çağrılarBelleğe tek seferde sığmayacak kadar büyük veriyi hashlemek için.
HMACsgcHMAC_SHA1 / _SHA256 / _SHA384 / _SHA512SHA-1/2 ailesi üzerinde RFC 2104 anahtarlı hashing.
RIPEMD-160 / HMAC-RIPEMD160sgcRIPEMD160, sgcHMAC_RIPEMD160ISO/IEC 10118-3 ve RFC 2286. Bitcoin adreslerinin SHA-256 üzerine katmanladığı 160 bitlik özet, ve OpenPGP'nin isim olarak belirttiği özet.
PBKDF2sgcPBKDF2, sgcPBKDF2_SHA1 / _SHA256 / _SHA512RFC 8018. Yalnızca hafifçe bellek zorlu; seçebiliyorsanız Argon2id veya scrypt'i tercih edin.
HKDFsgcHKDF_Extract_SHA256 / _SHA384, sgcHKDF_Expand_SHA256 / _SHA384, sgcHKDF_SHA256 / _SHA384RFC 5869, extract-then-expand anahtar türetme; paylaşılan bir gizli anahtarı birkaç anahtara dönüştürmenin standart yolu.
KDF1 / KDF2 / X9.63sgcKDF1, sgcKDF2, sgcKDF_X963ISO 18033-2'nin, IEEE 1363a'nın ve ANSI X9.63'ün tanımladığı sayaç modu türetmeleri; RSA-KEM'in ve ECIES'in isim olarak belirttiği budur. KDF1, 0'dan sayar ve KDF2, 1'den sayar; bu fark gerçek birlikte çalışabilirlik hatalarına neden olmuştur, bu yüzden spesifikasyonunuzun hangisini kastettiğini kontrol edin.
scryptsgcScryptRFC 7914, bellek zorlu, GPU/ASIC saldırısına PBKDF2'den çok daha iyi direnir.
Argon2sgcArgon2 (d / i / id), sgcArgon2id kolaylık sarmalayıcısıRFC 9106, Password Hashing Competition kazananı. İsteğe bağlı gizli (pepper) ve ilişkili veriyle tam arayüz.
SipHash-2-4sgcSipHash24 / sgcSipHash24_ValueHash tablosu anahtarları için hızlı anahtarlı PRF, hash-flooding hizmet reddine direnir.
TLSH bulanık hashsgcTLSH, sgcTLSH_Init/_Update/_FinalKriptografik bir özet değil, benzer-yakın tespit için konuma duyarlı hash.
TLSH benzerlik skorusgcTLSH_Diffİki TLSH özeti arasındaki mesafe; düşük olması daha benzer demektir.

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

Beş ayrı eğri ailesi artı RSA üzerinde imzalayın, doğrulayın ve paylaşılan gizli anahtarlar türetin.

YetenekFonksiyonNotlar
Ed25519 imzala / doğrulasgcEd25519_Sign / sgcEd25519_Verify, sgcEd25519_PublicKeyRFC 8032. 32 baytlık genel anahtar, 64 baytlık imza. Doğrulama, kanonik olmayan noktaları ve bölüm 5.1.7'ye göre S >= L'yi reddeder. İmzalama, gizli skalerde ve mesaj başına nonce'ta sabit zamanlıdır: sabit dört bitlik pencereler, on altısının hepsini bir maske altında tarayarak seçilen tablo girdisi ve bölüm 5.1.4'teki tam toplama formülü. Genel anahtar 32 baytlık tohumdan gelir.
X25519 anahtar değişimisgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecretCurve25519 üzerinde RFC 7748 Diffie-Hellman.
Ed448 imzala / doğrulasgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_VerifyRFC 8032, 448 bitlik (Goldilocks) EdDSA eğrisi.
X448 anahtar değişimisgcX448, sgcX448_PublicKey, sgcX448_SharedSecretCurve448 üzerinde RFC 7748 Diffie-Hellman.
secp256k1eccSecp256k1 ile sgcECDSA_SignHash / VerifyHashsgcCrypto_ECCurves içinde, Bitcoin/Ethereum eğrisi, SEC 2.
Brainpool P256r1 / P384r1 / P512r1eccBrainpoolP256r1 / P384r1 / P512r1 ile aynı fonksiyonlarRFC 5639, AB eIDAS ve devlet profillerinde yaygın.
NIST P-256 / P-384 / P-521aynı fonksiyonlar eccP256 / eccP384 / eccP521 ileTsgcECCurve artık yedi eğri adlandırıyor, bu yüzden anahtar üretimi, imzalama, doğrulama, ECDH ve nokta sıkıştırmanın hepsi, yalnızca bir PEM dosyasından değil, ham anahtar baytlarından da NIST asal eğrilerine ulaşır.
Deterministik ECDSA nonce'usgcECDSA_SignHash'e yerleşikRFC 6979: nonce, özel anahtardan ve mesajdan türetilir, RNG hata modu yoktur.
Sabit zamanlı skaler çarpmasgcECDSA_SignHash, sgcECDH_SharedSecret ve EC anahtar üretiminin içindesgcCrypto_ECCurves içindeki her eğri aynı motoru çalıştırır: veriye bağlı adımı olmayan Montgomery indirgemesi, sayısı eğriden gelen sabit bir pencere, tablo girdilerinin hepsini bir maske altında tarayarak seçilmesi ve hangi durumun geçerli olduğuna karar vermek için hiçbir koordinata bakmayan tam bir toplama formülü. sgcCrypto_EC içindeki JOSE, WebAuthn ve E2EE yolları aynı kodu çalıştırır.
ECDH (secp256k1 / Brainpool)sgcECDH_SharedSecretAynı dört eğri üzerinde paylaşılan gizli anahtar.
Nokta sıkıştırmasgcEC_Compress / sgcEC_DecompressDaha kısa sıkıştırılmış genel anahtar biçimini saklayın veya iletin.
JWS olarak EC (ES256/384/512)sgcECDSA_SignJWS / sgcECDSA_VerifyJWSİstenen bit uzunluğundan otomatik seçilen eğri, doğrudan bir PEM anahtarından imzala/doğrula; ECCurves'in JOSE odaklı kardeşi.
Genel ECDHsgcECDHHam bir özel anahtardan ve eş genel noktasından paylaşılan gizli anahtar.
Ham / DER ECDSA doğrulamasgcECDSA_VerifyRaw / sgcECDSA_VerifyDERHam bir (Qx, Qy, r, s) demetine ya da DER kodlu bir imzaya karşı doğrulayın.
DER ECDSA imzalama ve dönüştürmesgcECDSA_SignDER / sgcECDSA_VerifyDER, sgcECDSA_RawToDER / sgcECDSA_DERToRawX.509, CMS ve TLS, DER ECDSA-Sig-Value'yu taşır; INTEGER r ve ardından INTEGER s'den oluşan bir SEQUENCE. JOSE ve WebAuthn bunun yerine ham R || S çiftini taşır. Doğrudan iki biçimden birine imzalayın, ya da mevcut bir imzayı aralarında dönüştürün.
Schnorr imzaları (BIP-340)sgcSchnorr_PublicKey, sgcSchnorr_Sign, sgcSchnorr_VerifyYalnızca secp256k1, yalnızca-x 32 baytlık açık anahtarlar ve 64 baytlık imzalarla: Taproot'un, Nostr'un ve Lightning'in kullandığı budur. sgcSchnorr_TaggedHash, BIP-341 ve BIP-342 etiketlerinin aynı yapı üzerine inşa edilebilmesi için dışa açılmıştır.
RSA imzalama (PKCS#1 v1.5)sgcRSA_SignPKCS1Bir PEM özel anahtarından, SHA-1/256/384/512 özeti.
RSA özel anahtar işlemlerisgcRSA_SignPKCS1 ve sgcCrypto_RSA_Keys içindeki diğer imzalama ve şifre çözme çağrılarıHer işlem taze bir rastgele çiftle kör edilir, zamanlaması çarpanlara ya da veriye bağlı olmayan sabit pencereli bir üs alma ve CRT birleştirmesinden geçirilir ve sonuç döndürülmeden önce genel üsse karşı kontrol edilir. CRT yarılarından birindeki bir hata, aksi halde tek bir imzada bir çarpanı ele verirdi; bu yüzden uyumsuzluk halinde hiçbir şey döndürülmez.
RSA doğrulama (PKCS#1 v1.5 / PSS)sgcRSA_VerifyPKCS1, sgcRSA_VerifyPSS ve bir modül/üs üzerinde _Raw varyantlarıRFC 8017. Doğrulama, bir anahtar nesnesi oluşturmadan bir PEM anahtarından ya da ham modül ve üsten çalışır.
RSA anahtar üretimisgcRSA_GenerateKeyİstenen herhangi bir bit uzunluğu, Miller-Rabin asallık testi.
RSA-OAEP şifrelemesgcRSA_OAEP_Encrypt / sgcRSA_OAEP_DecryptRFC 8017 optimal asimetrik şifreleme dolgusu.
Bağımsız bir MGF1 hash'iyle RSA-OAEPbeş parametreli sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt aşırı yüklemeleriEtiket hash'ini ve MGF1 hash'ini ayrı ayrı sabitleyin. OAEPWithSHA256AndMGF1Padding, Bouncy Castle'da ikisi için de SHA-256 anlamına gelir ama SunJCE'de MGF1-SHA1 ile SHA-256 anlamına gelir, ve bu uyuşmazlık, Java birlikte çalışabilirliğinin başarısız olmasının olağan nedenidir.
RSA PKCS#1 v1.5 şifrelemesgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_DecryptRFC 8017 bölüm 7.2, Java'nın RSA/ECB/PKCS1Padding olarak adlandırdığı mod. Decrypt, her başarısızlık için aynı yoldan geçer, bu yüzden bir padding oracle'a çalışacak hiçbir şey vermez. Yeni herhangi bir şey için OAEP'i tercih edin.
RSA-PSS / PKCS#1 imzalamasgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / VerifyÜretilen bir TsgcRSAPrivateKey'den doğrudan imzalayın.
RSA anahtar dışa aktarımısgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, eşleşen DER çağrılarıPKCS#1 ve SubjectPublicKeyInfo kodlamaları.
PKCS#8 ve SEC 1 anahtar dışa aktarımısgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeySEC1DER / SEC1PEM, sgcEC_ExportSubjectPublicKeyInfo, sgcEC_ExportPublicKeyPEMJava'nın, .NET'in ve çoğu modern araç setinin beklediği BEGIN PRIVATE KEY kabı, SEC 1 BEGIN EC PRIVATE KEY biçiminin ve bir sertifikanın gömdüğü SubjectPublicKeyInfo'nun yanında. Şifresizdir, bu yüzden geri dönen şey çıplak anahtar malzemesidir.
RSA ve EC anahtarı içe aktarımısgcRSA_ImportPrivateKeyDER / PEM, sgcRSA_ImportPublicKeyDER / PEM, sgcEC_ImportPrivateKeyDER / PEM, sgcEC_ImportPublicKeyDER / PEMBu daha önce yoktu: üretilen bir anahtar yazılabiliyordu ama asla geri okunamıyordu. İçe aktarma, PKCS#1, PKCS#8, SEC 1 ve SubjectPublicKeyInfo'yu, DER veya PEM olarak kabul eder, dosya bunları atladığında CRT parametrelerini veya açık noktayı yeniden hesaplar, ve bozuk girdide raise etmek yerine False döndürür; bu yüzden güvenilmeyen dosyalar ona vermek için güvenlidir.
ECIES mühürleme / açmasgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_OpenBir X25519 genel anahtarına hibrit şifreleme: geçici ECDH artı bir AEAD, her yönde tek çağrı.

X.509 Sertifikaları ve ASN.1

Başkasının yayınladığı bir sertifikayı okuyun, ya da kendiniz üretin; her ikisinin altında bir DER kodlayıcı ve kod çözücü bulunur.

YetenekFonksiyonNotlar
DER okuyucusgcASN1_Read, sgcASN1_Next, sgcASN1_ContentBir DER yapısını düğüm düğüm gezer.
Katı DERsgcASN1_Read, sgcASN1_IsMinimalUnsignedIntegerBirimin okuduğu her yapı, belirtimi gereği DER'dir; bu yüzden uzunluklar DER kurallarına bağlıdır: belirsiz biçim reddedilir, kısa biçimin taşıyabileceği bir uzun biçim de öyle. INTEGER değerleri en küçük biçimde kodlanmamış bir ECDSA imzası da reddedilir, böylece tek bir imza iki şekilde yazılıp iki farklı değer sanılamaz.
PEM kodeğisgcPEM_Decode / sgcPEM_EncodeRFC 7468, DER'in etrafındaki -----BEGIN ... -----END sarmalayıcısı.
RSA anahtar ayrıştırmasgcASN1_ParseRSAPrivateKey / PublicKeyPKCS#1 (RFC 8017) anahtar yapıları.
EC anahtar ayrıştırmasgcASN1_ParseECPrivateKey / PublicKeySEC 1 anahtar yapıları.
DER yazıcı, yapısalsgcDER_Sequence, sgcDER_Set, sgcDER_Tagged, sgcDER_ContextExplicit / ImplicitHer sertifika alanının inşa edildiği yapı taşları.
DER yazıcı, değerlersgcDER_Integer, sgcDER_OctetString, sgcDER_BitString, sgcDER_Boolean, sgcDER_Nullİlkel değer kodlayıcıları.
DER yazıcı, dizeler ve tanımlayıcılarsgcDER_OID, sgcDER_UTF8String, sgcDER_PrintableString, sgcDER_IA5String, sgcDER_TimeNesne tanımlayıcıları, X.509'un kullandığı üç dize türü, ve UTCTime/GeneralizedTime.
Sertifika ayrıştırmasgcX509_ParseTam sertifika yapısı: konu, yayıncı, geçerlilik, genel anahtar, uzantılar.
İmza / zincir doğrulamasgcX509_VerifySignedBy, sgcX509_VerifyChainBir sertifikayı bir yayıncıya karşı doğrulayın, ya da bir DER sertifika dizisini yürüyüp doğrulayın.
CRL ayrıştırma ve iptalsgcX509_CRL_Parse, sgcX509_IsRevoked, sgcX509_CRL_VerifySignedByBir Sertifika İptal Listesini ayrıştırın ve bir seri numarasını buna karşı kontrol edin.
Ad biçimlendirmesgcX509_SubjectRFC2253, sgcX509_IssuerRFC2253, sgcX509_SubjectOneLineGünlükleme ve görüntüleme için RFC 2253 ayırt edici ad dizeleri.
Uzantılar ve SAN'larsgcX509_GetExtension, sgcX509_GetCRLDistributionURIsKeyfi uzantı OID'lerini ve CRL dağıtım noktası URI'lerini okuyun.
Kendinden imzalı sertifika üretimisgcX509_CreateSelfSignedTam TsgcX509Options: konu DN'si, geçerlilik penceresi, seri numarası, yol uzunluğu kısıtlamalı CA bayrağı, anahtar kullanımı, genişletilmiş anahtar kullanımı, konu alternatif adları (IPv4 SAN'ları dahil).
URI konu alternatif adlarıTsgcX509Options.URIsBir ana bilgisayar adı yerine SPIFFE tarzı bir hizmet kimliği için uniformResourceIdentifier SAN'ları. Değer, IA5String içeriği olarak olduğu gibi yazılır, bu yüzden tam bir URI geçirin.
PKCS#10 CSR üretimisgcX509_CreateCSRAynı seçenekler kaydından RFC 2986 sertifika imzalama isteği.
EC imzalı sertifikalar ve CSR'larsgcX509_CreateSelfSignedEx, sgcX509_CreateCSREx, sgcX509_ECKey, sgcX509_RSAKeyHer ikisini de bir TsgcX509SignKey içine sararak RSA'nın yanı sıra bir EC anahtarıyla da imzalayın. Bir EC sertifikası, bir RSA sertifikasının kabaca üçte biri boyutundadır ve çok daha hızlı doğrulanır. TsgcX509Options.Hash, hâlâ yalnızca SHA'yı adlandırır; algoritma anahtarı izler, bu yüzden bir EC anahtarıyla rhSHA256, ecdsa-with-SHA256 anlamına gelir.
CA yayınısgcX509_CreateSigned, sgcX509_CreateSignedFromCSRBir CA anahtarıyla imzalanmış bir sertifika yayınlayın; ister bir seçenekler kaydından, ister ayrıştırılmış bir PKCS#10 isteğinden.
Kuantum sonrası imzalama anahtarlarısgcX509_MLDSAKey, sgcX509_SLHDSAKeyBir ML-DSA veya SLH-DSA anahtarını bir TsgcX509SignKey içine sarın ve sgcX509_CreateSelfSignedEx, sgcX509_CreateCSREx ya da CA yayıncılarına verin. ML-DSA için RFC 9881, SLH-DSA için RFC 9909.
ML-KEM sertifikalarıML-KEM konu anahtarıyla sgcX509_CreateSignedRFC 9935. Bir CA, imzalayamayan bir ML-KEM genel anahtarını sertifikalandırabilir; bu yüzden sertifika yayınlanmadan önce sahiplik başka bir yolla kanıtlanmalıdır.
Okumada kuantum sonrası anahtar türleriTsgcX509PublicKeyTypex509pkRSA, x509pkEC ve x509pkEd25519'un yanı sıra x509pkMLDSA, x509pkSLHDSA ve x509pkMLKEM. sgcX509_Parse, sgcX509_VerifySignedBy ve sgcX509_CSR_Verify hepsini işler.
Zincir kısıtlamalarısgcX509_VerifyChainbasicConstraints pathLenConstraint değerini ve nameConstraints uzantısını dNSName, iPAddress, rfc822Name, uniformResourceIdentifier ve directoryName üzerinde zorunlu kılar.
Üretimde nameConstraintsTsgcX509Options.PermittedDNSNames, ExcludedDNSNames, PermittedIPRanges, ExcludedIPRangesİzin verilen ve dışlanan alt ağaçları bir CA sertifikasına yazar, böylece yukarıdaki zincir doğrulayıcı bunları zorunlu kılabilir.
IPv6 adres SAN'larıTsgcX509Options.IPAddressesIPv4'ün yanı sıra, RFC 4291'in herhangi bir metin biçimindeki IPv6 adreslerini kabul eder.
PEM çıktısısgcX509_ToPEMÜretilen DER'i kaydetmeye hazır bir PEM dosyası olarak sarar.

ML-KEM, ML-DSA ve SLH-DSA

NIST'in Ağustos 2024'te FIPS 203, 204 ve 205 olarak kesinleştirdiği üç algoritma, artı geçiş dönemi için bir hibrit birleştirici.

YetenekFonksiyonNotlar
ML-KEM anahtar üretimisgcMLKEM_GenerateKeyPair, sgcMLKEM_GenerateKeyPairFromSeedFIPS 203, eski adıyla Kyber. Üç parametre seti: mlkem512, mlkem768, mlkem1024.
ML-KEM kapsüllemesgcMLKEM_Encapsulate, sgcMLKEM_EncapsulateWithSeedTaze bir 32 baytlık paylaşılan gizli anahtar ve bunu taşıyan şifreli metni üretir. Genel anahtar önce FIPS 203 bölüm 7.2'nin girdi kontrollerinden geçer; bu yüzden yanlış uzunlukta olan ya da modül kontrolünü geçemeyen bir anahtar istisna oluşturur.
ML-KEM çözme (decapsulate)sgcMLKEM_DecapsulateDoğru uzunlukta olup çözülemeyen bir şifreli metin, hata yerine sözde rastgele bir gizli anahtar (örtük ret) üretir, bu yüzden zamanlama ve hata davranışı hiçbir şey ortaya çıkarmaz. Yanlış uzunlukta bir şifreli metin ya da özel anahtar veya hash kontrolünü geçemeyen bir özel anahtar, FIPS 203 bölüm 7.3'ün girdi kontrollerine göre önce istisna oluşturur.
ML-KEM boyutlarısgcMLKEM_PublicKeySize, PrivateKeySize, CiphertextSize, SharedSecretSizeTampon boyutlandırma için parametre setine göre bayt uzunlukları.
Hibrit X25519 + ML-KEMsgcHybrid_GenerateKeyPair, sgcHybrid_Encapsulate, sgcHybrid_DecapsulateKlasik ve kuantum sonrası bir paylaşılan gizli anahtarı bir KDF üzerinden birleştirir; böylece sonuç asla X25519'dan tek başına daha zayıf olmaz. Sektörün ML-KEM'i bugün nasıl devreye aldığının önerilen yolu.
ML-DSA anahtar üretimisgcMLDSA_GenerateKeyPair, sgcMLDSA_GenerateKeyPairFromSeedFIPS 204, eski adıyla Dilithium. Üç parametre seti: mldsa44, mldsa65, mldsa87.
ML-DSA imzala / doğrulasgcMLDSA_Sign / sgcMLDSA_VerifyFIPS 204 arayüzüne göre deterministik veya rastgeleleştirilmiş imzalama, artı bir bağlam dizesi.
ML-DSA boyutlarısgcMLDSA_PublicKeySize, PrivateKeySize, SignatureSizeParametre setine göre bayt uzunlukları.
SLH-DSA anahtar üretimisgcSLHDSA_GenerateKeyPair, sgcSLHDSA_GenerateKeyPairFromSeedFIPS 205, eski adıyla SPHINCS+. Durumsuz hash tabanlı imzalar: güvenlik yalnızca hash fonksiyonuna dayanır, bir kafes veya eğri varsayımına değil.
SLH-DSA imzala / doğrulasgcSLHDSA_Sign / sgcSLHDSA_VerifyAltı SHAKE parametre seti: slhShake128s, slhShake128f, slhShake192s, slhShake192f, slhShake256s, slhShake256f. s setleri küçük imzaları, f setleri hızlı imzalamayı önceliklendirir.
SLH-DSA boyutları ve adlandırmasgcSLHDSA_PublicKeySize, PrivateKeySize, SignatureSize, sgcSLHDSA_ParamsNameSLH-DSA imzaları büyüktür (sete bağlı olarak 7,8 KB ile 49 KB arası); imzalamadan önce tamponu boyutlandırın.
Genel anahtar dışa ve içe aktarımı, DERsgcMLDSA_ExportSubjectPublicKeyInfo / ImportSubjectPublicKeyInfo, ve birebir aynı sgcMLKEM_* ve sgcSLHDSA_* çiftleriX.509 SubjectPublicKeyInfo, böylece kuantum sonrası bir genel anahtar bir RSA veya EC anahtarının girdiği yapıya girer. RFC 9881, RFC 9909 ve RFC 9935.
Özel anahtar dışa & içe aktarımı, DERsgcMLDSA_ExportPrivateKeyInfo / ImportPrivateKeyInfo, ve sgcMLKEM_* ile sgcSLHDSA_* çiftleriPKCS#8 OneAsymmetricKey, sürüm 0 ve 1. İçe aktarma anahtarın tutarlılığını kontrol eder: eşleşmeyen gömülü bir genel anahtar reddedilir, aynı anahtarın tohum ve genişletilmiş biçimleri uyuşmalıdır ve bir ML-DSA anahtarı kayıtlı t0 ve tr değerlerini yeniden üretmelidir. SLH-DSA, PK.root değerini tohumdan yeniden hesaplar; bu yaklaşık bir anahtar üretimi kadar maliyetlidir, bu yüzden bu içe aktarımlar aVerify parametresi alır, varsayılan True'dur ve kendi uygulamanızın ürettiği bir anahtar için False geçebilirsiniz.
PEM dışa ve içe aktarımısgcMLDSA_ExportPublicKeyPEM, ExportPrivateKeyPEM, ImportPublicKeyPEM, ImportPrivateKeyPEM, ve sgcMLKEM_* ile sgcSLHDSA_* setleriRFC 7468, -----BEGIN ... -----END sarmalayıcısı; böylece anahtarlar PKI'nın geri kalanıyla aynı dosyalara ve aynı araçlara düşer.
Özel anahtar biçimiTsgcPQCPrivateKeyFormatML-DSA ve ML-KEM özel anahtarlarının üç biçimi vardır. pqkfSeed yalnızca tohumu yazar (ML-DSA için 32 bayt, ML-KEM için 64 baytlık d||z tohumu), pqkfExpanded genişletilmiş anahtarı yazar, pqkfBoth ikisini birden taşır. SLH-DSA'nın yalnızca tek bir özel anahtar biçimi vardır.
Tohumla birlikte anahtar üretimisgcMLDSA_GenerateKeyPairAndSeed, sgcMLKEM_GenerateKeyPairAndSeedTohumu anahtar çiftiyle birlikte geri verir, böylece üretimden hemen sonra tohum biçimli bir PKCS#8 veya PEM dosyası yazılabilir.
X-Wing hibrit KEMsgcXWing_GenerateKeyPair, sgcXWing_Encapsulate, sgcXWing_Decapsulatedraft-connolly-cfrg-xwing-kem-10: tek bir KEM olarak X25519 ile ML-KEM-768. Genel anahtar 1216 bayt, özel anahtar 32 bayt (tohum), şifreli metin 1120 bayt, paylaşılan gizli anahtar 32 bayt.
TLS 1.3 hibrit anahtar paylaşımlarısgcTLSHybrid_ClientKeyShare, sgcTLSHybrid_ServerKeyShare, sgcTLSHybrid_ClientSharedSecret, sgcTLSHybrid_GroupName, sgcTLSHybrid_AvailableRFC 10024 grupları X25519MLKEM768, SecP256r1MLKEM768 ve SecP384r1MLKEM1024 (IANA kod noktaları 0x11EC, 0x11EB, 0x11ED). Bunlar bağımsız KEM değildir, yalnızca bir TLS anahtar paylaşımı oluştururlar.
JSON Web Token'lar için ML-DSAJWTOptions.Algorithms.MLDSA.PrivateKey, PublicKey, Enabled, sgcMLDSA_ExportPublicJWK, sgcMLDSA_ExportPrivateJWK, sgcMLDSA_ImportJWK, sgcMLDSA_ImportJWKAsPEMRFC 9964; bir sgcCrypto_* biriminde değil, sgcHTTP_JWT_MLDSA içinde yer alır. JWS algoritmaları ML-DSA-44, ML-DSA-65 ve ML-DSA-87 (jwtMLDSA44, jwtMLDSA65, jwtMLDSA87), istemcide bir PKCS#8 PEM, sunucuda bir SubjectPublicKeyInfo PEM, AKP JSON Web Key'leri ve bu yolun hiçbir yerinde OpenSSL yok.
Bilinen yanıt doğrulamasıNIST ACVP vektörleriML-KEM anahtar üretimi, kapsülleme ve çözme ile ML-DSA ve SLH-DSA anahtar üretimi, imza üretimi ve imza doğrulaması, sgcWebSockets QA paketindeki NIST ACVP bilinen yanıt vektörlerine karşı kontrol edilir.

sgcCrypto, ed25519187 veya SPECK olduğunu iddia etmez. ed25519187'nin yayınlanmış bir spesifikasyonu yoktur, ve SPECK 2018'de ISO standardizasyonundan geri çekilmiştir; ikisi de burada uygulanmamıştır.

Bu Birimlerin Üzerine Kurulu Bir TLS 1.3 ve TLS 1.2 Yığını

sgcCrypto ilkelleri üzerine Object Pascal ile yazılmıştır ve aynı pakette gelir. sgcCrypto_* içinde değil, sgcSSL_NativeTLS* birimlerinde yer alır, bu yüzden yukarıda sayılan 43 birimden biri değildir.

YetenekAPINotlar
Bir istemcide seçinTLSOptions.IOHandler := iohNativeTLSOpenSSL'i, SChannel'ı ve platform TLS arka uçlarını süreç içi Pascal motoruyla değiştirir. Hiçbir hedefte dağıtılacak bir şey yoktur.
Bir sunucuda seçinSSLOptions.IOHandler := iohNativeTLSVarsayılan Indy sunucu motoruyla ve IOCP ile EPOLL motorlarıyla çalışır.
Protokol sürümüTLSOptions.Versionİzin verilen en düşük sürüm. tls1_2 veya tlsUndefined TLS 1.3 ya da TLS 1.2 için el sıkışma yapar, tls1_3 yalnızca TLS 1.3'e izin verir, tls1_0 veya tls1_1 ise bir yapılandırma hatası oluşturur. Bir sunucuda SSLOptions.Version aynısını yapar. Yalnızca TLS 1.2 için, CipherSuites içinde yalnızca TLS 1.2 paketlerini listeleyin.
Anahtar değişimi gruplarıTLSOptions.NativeTLS_Options.Groupsİki nokta üst üste ile ayrılmış, OpenSSL biçiminde. Varsayılan değer: X25519MLKEM768:X25519:secp256r1:secp384r1, bu yüzden karşı taraf kabul ettiği sürece el sıkışma kuantum sonrası hibrittir. SGC_CRYPTO_FIPS ile yapılan bir derleme bunun yerine varsayılan olarak SecP256r1MLKEM768:SecP384r1MLKEM1024:secp256r1:secp384r1 kullanır. Üç hibrit grup yalnızca TLS 1.3'tedir, bu yüzden bir TLS 1.2 bağlantısı X25519, secp256r1 veya secp384r1 kullanır.
Şifre paketleriTLSOptions.NativeTLS_Options.CipherSuitesİki nokta üst üste ile ayrılmış, OpenSSL biçiminde. Varsayılan değer, TLS 1.3 için TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256, TLS 1.2 için ise buna ek olarak AES-128-GCM, AES-256-GCM ve ChaCha20-Poly1305 ile ECDHE_ECDSA ve ECDHE_RSA'dır. AES-CBC'li ECDHE ve RSA anahtar değişimi yalnızca adlandırıldıklarında kullanılır; toplamda 20 TLS 1.2 paketi vardır. SGC_CRYPTO_FIPS ile yapılan bir derleme ChaCha20-Poly1305'i ve RSA anahtar değişimini dışarıda bırakır.
Güvenilen köklerTLSOptions.RootCertFile, TLSOptions.NativeTLS_Options.UseSystemRootsKökler RootCertFile dosyasından gelir. İşletim sisteminin zaten güvendiği kökleri eklemek için UseSystemRoots değerini True yapın: Windows'ta ROOT deposu, diğer her platformda ise standart konumlar arasında bulunan ilk CA paket dosyası. macOS veya iOS anahtar zincirini ya da Android deposunu asla okumaz. Varsayılan olarak kapalıdır, bu yüzden kaynak RootCertFile olarak kalır. SSLOptions üzerindeki aynı özellik, bir sunucunun doğruladığı istemci sertifikaları için geçerlidir.
Zincir oluşturmakarşı tarafın gönderdiği sertifika zinciriZincirde yaprak sertifikadan bir güvenilen köke giden bir yol aranır, bu yüzden RFC 8446 bölüm 4.4.2'nin istediği gibi fazladan sertifikalar ve herhangi bir sıra kabul edilir. Arama geri izleme yapar; bu yüzden doğru düzenleyeni belirten ama hiçbir yere varmayan bir sertifika artık arkasındaki geçerli bir yolu gizlemez. Sertifika iptali ve sertifika ilkeleri kontrol edilmez.
Protokol kapsamıRFC 8446, RFC 5246TLS 1.3 ve TLS 1.2. TLS 1.1, TLS 1.0 veya SSL yok. TLS 1.2, RFC 7627'nin genişletilmiş ana sırrını ve her iki tarafta da RFC 8446 düşürme korumasını kullanır, yeniden görüşmeyi ve SHA-1 imzalarını reddeder (RFC 9155) ve CBC kayıtlarını sabit zamanda denetler.
Uygulanmayanlarn/aOturum devam ettirme ve PSK yok, 0-RTT yok, QUIC yok.
Eş doğrulama olayıOnSSLVerifyPeerBu motorda kullanılamaz; motorun kendi doğrulama kancaları vardır. Kodunuz bu olaya bağlıysa OpenSSL'de ya da bir platform arka ucunda kalın.

Tek Kullanımlık Parolalar, Kodekler ve Şifreli ZIP

Yardımcı katman: tek kullanımlık kodlar, kütüphanenin geri kalanının dayandığı kodlamalar ve WinZip AES şifrelemesi.

YetenekFonksiyonNotlar
HOTPsgcHOTPRFC 4226, sayaç tabanlı tek kullanımlık parola.
TOTPsgcTOTP, sgcTOTP_FromBase32RFC 6238, zaman tabanlı tek kullanımlık parola; Base32 varyantı, gizli anahtarı bir kimlik doğrulayıcı uygulamasının gösterdiği tam haliyle kabul eder.
TOTP doğrulamasgcTOTP_VerifyGönderilen bir kodu bir adım penceresi boyunca sabit zamanda kontrol eder; böylece ne sonuç ne de konumu zamanlama üzerinden sızmaz. Tekrar oynatmayı kendisi durdurmaz; çağıran, kullanılan kodları izler.
Sabit zamanlı karşılaştırmasgcConstantTimeEqualsKütüphane genelinde etiket ve MAC karşılaştırmaları için kullanılır.
Güvenli sıfırlamasgcSecureZeroAnahtar malzemesinin bellekte kalmaması için bir bayt tamponunun üzerine yazar.
HexsgcHexEncode / sgcHexDecodeKüçük harf hex, büyük/küçük harfe duyarsız çözme.
Base64urlsgcBase64UrlEncode / sgcBase64UrlDecodeRFC 4648 bölüm 5, dolgusuz; JWT ve JOSE'nin kullandığı kodlama.
Base32sgcBase32Encode / sgcBase32DecodeRFC 4648 bölüm 6; TOTP gizli anahtarlarının ve kimlik doğrulayıcı uygulamalarının kullandığı kodlama.
WinZip AES anahtar türetmesgcZipAE2_DeriveKeysBir paroladan ve tuzdan PBKDF2 tabanlı anahtar, kimlik doğrulama anahtarı ve parola doğrulayıcısı.
WinZip AES şifrele / çözsgcZipAE2_Encrypt / sgcZipAE2_DecryptAE-1 ve AE-2, AES-128/192/256; TsgcZipAESStrength üzerinden girdi başına tuz boyutlandırması.
WinZip girdi paketlemesgcZipAE2_PackEntry / sgcZipAE2_UnpackEntryTuzu, doğrulayıcıyı, şifreli metni ve kimlik doğrulama kodunu diskteki düzende birleştirir.
WinZip ek alanısgcZipAE2_BuildExtraField / sgcZipAE2_ParseExtraFieldBir ZIP girdisini AES şifreli olarak işaretleyen 0x9901 ek alanı.
Eski hash'ler (yalnızca birlikte çalışabilirlik)sgcMD4, sgcMD5, sgcHMAC_MD5Daha eski biçimleri ve protokolleri okumak için tutulur; yeni bir tasarımda kullanmayın.
Eski şifre (yalnızca birlikte çalışabilirlik)sgcDES_EncryptECB / sgcDES_DecryptECB, sgcDES_NTLM7to8DES-ECB ve DES tabanlı NTLM anahtar genişletme adımı; ikisi de geri çekilmiştir (FIPS 46-3), eski birlikte çalışabilirlik için tutulur.
Güvenli rastgele baytsgcRandomBytes / sgcRandomFillMSWINDOWS altında BCryptGenRandom (Windows CNG), başka yerlerde /dev/urandom; her iki durumda da tek çağrı.

sgcCrypto Nerede Çalışır

Neyin desteklendiği, kesin olarak belirtilmiş.

AlanAyrıntı
İşletim sistemisgcVer.inc içinde SGC_CRYPTO'yu saran bir MSWINDOWS koruması, ya da başka herhangi bir platform koruması yoktur. 43 birimin tamamı Win32, Win64, Linux64, macOS, iOS ve Android için derlenir.
Rastgele sayı kaynağıTek platform-farkındalıklı birim olan sgcCrypto_Random, hedef başına bir CSPRNG seçer: MSWINDOWS altında BCryptGenRandom (Windows CNG), POSIX hedeflerde /dev/urandom; hepsi aynı sgcRandomBytes çağrısının arkasında. Baytlar doğrudan işletim sisteminin üretecinden gelir, üzerinde kendine ait bir üreteç çalışmaz. Windows’ta RtlGenRandom ve ardından CryptGenRandom yalnızca BCryptGenRandom kullanılamadığında devreye girer ve hiçbir kaynak okunamazsa zayıf bayt döndürmek yerine bir istisna fırlatılır.
FIPS moduVarsayılan olarak kapalı olan isteğe bağlı SGC_CRYPTO_FIPS tanımı, derleme zamanında onaylanmamış her algoritmayı 43 birimden kaldırır ve çalışma zamanında birkaç parametre kuralını denetler. Kütüphaneyi FIPS onaylı algoritmalarla sınırlı tutar, ancak sgcCrypto FIPS 140-3 doğrulanmış bir modül değildir ve bu tanım bir doğrulama iddiası taşımaz. FIPS Modu
DelphiDelphi 7'den RAD Studio 13 Florence'a kadar. Hiçbir yerde yerel bir 64 bitlik tam sayı türü varsayılmaz: sgcCrypto_Int64 ve sgcCrypto_BigInteger içindeki TsgcBigInt türü, hash'lerin, eğrilerin ve kuantum sonrası birimlerin ihtiyaç duyduğu aritmetiği taklit eder.
C++ BuilderÜretilen başlıklar üzerinden C++ Builder, aynı kaynak ağacı.
Tasarım zamanı iziYok. Bir sgcCrypto_Reg.pas yoktur, hiçbir şey RegisterComponents'lanmaz ve hiçbir birim bir bileşen paleti sayfasında görünmez.
BağımlılıklarOpenSSL bağlaması yok, harici DLL yok. Her ilkel, başvurduğunuz birimin içinde doğrudan Object Pascal olarak uygulanır.
Kaynak koduHer ücretli katmanda ve sgcCrypto'yu zaten içeren sürüm paketlerinde tam Object Pascal kaynağı.
Yeniden dağıtımOluşturduğunuz ikili dosyalar, koltuk başına veya sunucu başına bir çalışma zamanı ücreti olmadan telifsizdir.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

sgcCrypto ile Geliştirin

Ücretsiz deneme sürümünü indirin ve bir fonksiyon çağırın, bileşen gerekmez.