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 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

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, zincirle, CRL, iptal.
sgcCrypto_X509_GenPKIKendinden imzalı sertifika ve PKCS#10 CSR üretimi, RSA veya EC imzalı, URI konu alternatif adlarıyla.
sgcCrypto_MLKEMKuantum sonrasıML-KEM anahtar kapsülleme (FIPS 203), 3 parametre seti.
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.
sgcCrypto_MLDSAKuantum sonrasıML-DSA dijital imzalar (FIPS 204), 3 parametre seti.
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.
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-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_VerifyRFC 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.
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.
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 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.
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.
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.
ML-KEM çözme (decapsulate)sgcMLKEM_DecapsulateAsla başarısız olmaz: bozuk bir şifreli metin, bir hata yerine sözde rastgele bir gizli anahtar üretir (örtük ret); bu yüzden zamanlama ve hata davranışı hiçbir şey ortaya çıkarmaz.
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.

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.

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 Windows CryptoAPI, 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 Windows CryptoAPI, POSIX hedeflerde /dev/urandom; hepsi aynı sgcRandomBytes çağrısının arkasında.
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.