sgcCrypto 기능 매트릭스

디스크에 있는 43개 유닛 전체에 걸쳐 sgcCrypto가 하는 모든 일을 정리했습니다. 여기에는 컴포넌트도 디자인 타임 속성도 없습니다. 아래의 모든 행은 직접 호출하는 함수 또는 프로시저입니다. 전체 소스 코드는 모든 라이선스에 포함됩니다. 아래 앵커를 클릭하면 유닛들이 속한 6개의 기능 패밀리와, 같은 패키지가 그 위에 올린 TLS 1.3 및 TLS 1.2 엔진으로 이동합니다.

sgcCrypto에는 컴포넌트가 없습니다. 아래의 43개 유닛은 평범한 함수를 내보냅니다. Tsgc* 클래스도, sgcCrypto_Reg.pas도 없습니다. uses 절에 유닛을 추가하고 함수를 호출하세요.

이미 포함되어 있습니다. sgcCrypto는 sgcWebSockets Standard, Professional, Enterprise, 그리고 All-Access 안에 무료로 포함되어 제공됩니다. Core만 보유한 고객을 위해 단독으로도 판매됩니다(sgcWebSockets Core 런타임 포함). 가격 안내를 참고하세요.

대칭 암호화

AES, CCM, ChaCha20, Poly1305, 5개 유닛

해싱 & KDF

SHA-2/3, BLAKE2, Argon2, 11개 유닛

서명 & 키 교환

Ed25519, X25519, Schnorr, RSA, 10개 유닛

PKI

X.509, ASN.1, RSA & EC CSR, 5개 유닛

포스트 퀀텀

ML-KEM, ML-DSA, SLH-DSA, 6개 유닛

OTP & 기타

HOTP/TOTP, 인코딩, ZIP AES, 6개 유닛

TLS 1.3 및 1.2 엔진

iohNativeTLS, X25519MLKEM768, 순수 Pascal

43개의 소스 유닛

sgcWebSockets/delphi/Source/ 아래에 있는 모든 sgcCrypto_*.pas 유닛을 패밀리별로 정리했습니다.

유닛패밀리하는 일
sgcCrypto_AES대칭AES-CBC, AES-GCM(AEAD), AES-CTR.
sgcCrypto_Modes대칭AES-ECB, OFB, CFB, CTS, CCM(AEAD), Key Wrap / 패딩 포함 Key Wrap, 그리고 7가지 패딩 방식.
sgcCrypto_CMAC대칭AES-CMAC과 AES-GMAC 메시지 인증.
sgcCrypto_ChaCha대칭ChaCha20, XChaCha20, Salsa20, XSalsa20.
sgcCrypto_Poly1305대칭Poly1305 MAC, ChaCha20-Poly1305 및 XChaCha20-Poly1305 AEAD.
sgcCrypto_SHA2해싱 & KDFSHA-1, SHA-224, SHA-256, SHA-384, SHA-512.
sgcCrypto_Keccak해싱 & KDFSHA-3, SHAKE128/256, cSHAKE, KMAC.
sgcCrypto_Blake2b해싱 & KDFBLAKE2b, 키 사용 여부 선택 가능.
sgcCrypto_Blake2s해싱 & KDFBLAKE2s, 키 사용 여부 선택 가능.
sgcCrypto_HMAC해싱 & KDFHMAC-SHA1/256/384/512.
sgcCrypto_KDF해싱 & KDFPBKDF2, KDF1, KDF2, X9.63, 해시 선택 가능.
sgcCrypto_HKDF해싱 & KDFHKDF extract-and-expand.
sgcCrypto_Scrypt해싱 & KDFscrypt 메모리 하드 KDF.
sgcCrypto_Argon2해싱 & KDFArgon2d, Argon2i, Argon2id.
sgcCrypto_SipHash해싱 & KDFSipHash-2-4 키 기반 해시.
sgcCrypto_TLSH해싱 & KDFTLSH 퍼지 해시와 유사도 차이 계산.
sgcCrypto_Ed25519서명 & 키 교환Ed25519 서명 / 검증.
sgcCrypto_X25519서명 & 키 교환X25519 Diffie-Hellman.
sgcCrypto_Ed448서명 & 키 교환Ed448 서명 / 검증.
sgcCrypto_X448서명 & 키 교환X448 Diffie-Hellman.
sgcCrypto_GF448서명 & 키 교환Ed448/X448을 위한 내부 GF(2^448-2^224-1) 필드 연산.
sgcCrypto_ECCurves서명 & 키 교환secp256k1, Brainpool P256r1/P384r1/P512r1, NIST P-256/P-384/P-521 위의 ECDSA / ECDH, DER 서명, 키 내보내기/가져오기, 그리고 BIP-340 Schnorr.
sgcCrypto_EC서명 & 키 교환JWS(ES256/384/512)로서의 일반 EC 서명/검증, ECDH.
sgcCrypto_RSA서명 & 키 교환RSA PKCS#1 v1.5 서명, PKCS#1 v1.5 / PSS 검증, PEM 또는 원시 값으로부터.
sgcCrypto_RSA_Keys서명 & 키 교환RSA 키 생성, OAEP(독립적인 MGF1 해시 지정 가능), PSS, PKCS#1 v1.5 서명/검증/암호화/복호화, PKCS#1 및 PKCS#8 DER/PEM 내보내기 및 가져오기.
sgcCrypto_ECIES서명 & 키 교환X25519 위의 ECIES seal / open 하이브리드 암호화.
sgcCrypto_ASN1PKIDER 리더, PEM 코덱, PKCS#1/SEC 1 키 파싱.
sgcCrypto_DERPKIDER 라이터 기본 요소.
sgcCrypto_BigIntegerPKI내부 임의 정밀도 정수 연산.
sgcCrypto_X509PKIX.509 파싱, 검증, pathLenConstraint와 nameConstraints를 적용한 체인 검증, CSR 검증, CRL, 폐기 확인. RSA, EC, Ed25519, ML-DSA, SLH-DSA, ML-KEM 공개 키를 읽습니다.
sgcCrypto_X509_GenPKI자체 서명 인증서, CA 발급 인증서, PKCS#10 CSR 생성. RSA, EC, ML-DSA 또는 SLH-DSA 서명, URI 및 IPv6 주체 대체 이름과 nameConstraints 포함.
sgcCrypto_MLKEM포스트 퀀텀ML-KEM 키 캡슐화(FIPS 203), 매개변수 집합 3종. SubjectPublicKeyInfo, PKCS#8, PEM 키 가져오기 및 내보내기 지원.
sgcCrypto_MLKEM_Poly포스트 퀀텀ML-KEM 뒤에 있는 내부 다항식 환 연산.
sgcCrypto_MLKEM_Hybrid포스트 퀀텀하이브리드 X25519 + ML-KEM 키 캡슐화, X-Wing, 그리고 RFC 10024 TLS 1.3 하이브리드 키 셰어.
sgcCrypto_MLDSA포스트 퀀텀ML-DSA 전자 서명(FIPS 204), 매개변수 집합 3종. SubjectPublicKeyInfo, PKCS#8, PEM 키 가져오기 및 내보내기 지원.
sgcCrypto_MLDSA_Poly포스트 퀀텀ML-DSA 뒤에 있는 내부 다항식 환 연산.
sgcCrypto_SLHDSA포스트 퀀텀SLH-DSA 서명(FIPS 205), SHAKE 매개변수 집합 6종. SubjectPublicKeyInfo, PKCS#8, PEM 키 가져오기 및 내보내기 지원.
sgcCrypto_OTPOTP & 기타HOTP, TOTP, 상수 시간 검증 윈도우.
sgcCrypto_EncodingOTP & 기타상수 시간 비교, 안전한 초기화, hex/Base64url/Base32.
sgcCrypto_Zip_AE2OTP & 기타ZIP 항목용 WinZip AES 암호화, AE-1 / AE-2.
sgcCrypto_LegacyOTP & 기타MD4, MD5, HMAC-MD5, DES-ECB, RIPEMD-160, HMAC-RIPEMD160, 상호운용 전용.
sgcCrypto_RandomOTP & 기타크로스 플랫폼 CSPRNG.
sgcCrypto_Int64OTP & 기타Delphi 7을 위한 내부 64비트 정수 에뮬레이션.

암호화 & MAC

운영 코드가 실제로 사용하는 모드의 AES와, ChaCha20/Poly1305 AEAD 계열입니다.

기능함수비고
AES-CBCsgcAES_CBC_Encrypt / sgcAES_CBC_DecryptPKCS#7 패딩, 16바이트 IV. 키 길이가 암호를 결정합니다: 16/24/32바이트 = AES-128/192/256.
패딩 없는 AES-CBCsgcAES_CBC_Encrypt_NoPad / sgcAES_CBC_Decrypt_NoPadJava가 AES/CBC/NoPadding으로 표기하는 모드입니다. 입력은 이미 16바이트의 배수여야 하며, 정렬되지 않은 입력은 상대방이 읽을 수 없는 것으로 조용히 패딩되는 대신 예외를 일으킵니다.
AES-GCM(AEAD)sgcAES_GCM_Encrypt / sgcAES_GCM_Decrypt12바이트 IV를 권장합니다. 16바이트 태그를 상수 시간으로 비교하며, 태그 검증에 실패하면 복호화는 False와 빈 평문을 반환합니다.
AES 코어sgcAES_GetCore / sgcAES_SetCoreaescConstantTime이 기본값이며, 비밀 바이트로 메모리를 인덱싱하거나 분기하지 않는 비트슬라이스 코어로, 키와 평문에 대한 캐시 타이밍 채널을 막아 줍니다. aescTable은 고전적인 테이블 코어로, 데이터 캐시를 통해 정보가 새고 모든 측정에서 더 느렸기 때문에 폴백으로만 남겨 두었습니다. GCM을 인증하는 GHASH는 키로 분기하는 대신 마스크 아래에서 곱셈을 수행합니다. 코어는 시작할 때 한 번, 어떤 워커 스레드가 실행되기 전에 설정하세요.
AES-CCM(AEAD)sgcAES_CCM_Encrypt / sgcAES_CCM_Decrypt제약된 환경과 IoT 스택, 즉 Zigbee, 802.15.4, Bluetooth, TLS CCM 스위트가 지정하는 AEAD로, 블록 암호만 필요할 뿐 GHASH 테이블이 필요 없습니다. 논스는 7~13바이트, 태그는 4~16바이트이며 상수 시간으로 검증됩니다.
AES-CTRsgcAES_CTRSRTP 방식의 AES-CM(RFC 3711). 대칭 호출, 패딩 없음, 128비트 빅 엔디언 카운터.
AES-ECBsgcAES_ECB_Encrypt / sgcAES_ECB_DecryptIV도 체이닝도 없습니다. 이를 지정하는 형식과의 상호운용을 위해 포함되어 있습니다.
패딩 방식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, TBC를 다루므로, CBC와 ECB는 PKCS#7을 선택하지 않은 시스템의 데이터도 읽고 쓸 수 있습니다. sgcPad_Remove는 잘못된 패딩이라면 그 종류에 관계없이 동일한 경로로 False를 반환합니다.
AES-OFB / AES-CFBsgcAES_OFB, sgcAES_CFB_Encrypt / sgcAES_CFB_Decrypt스트림 암호 방식의 피드백 모드입니다.
AES-CTSsgcAES_CTS_Encrypt / sgcAES_CTS_Decrypt사이퍼텍스트 스틸링: 블록 크기의 배수가 아닌 데이터를 패딩 오버헤드 없이 암호화합니다.
AES Key WrapsgcAES_KeyWrap / sgcAES_KeyUnwrapRFC 3394. 한 키를 다른 키로 감쌀 때 사용합니다.
AES Key Wrap with PaddingsgcAES_KeyWrapPad / sgcAES_KeyUnwrapPadRFC 5649. 8바이트의 배수가 아닌 키 자료를 위한 것입니다.
AES-CMACsgcAES_CMAC / sgcAES_CMAC_VerifyRFC 4493 메시지 인증 코드입니다.
AES-GMACsgcAES_GMAC / sgcAES_GMAC_VerifyGCM의 인증 전용 모드입니다: 전체 메시지가 추가 데이터로 전달되며 아무것도 암호화되지 않습니다. IV는 같은 키로 절대 반복되어서는 안 되며, 16바이트 태그는 상수 시간으로 비교됩니다.
저수준 블록 기본 요소sgcAES_ExpandKey, sgcAES_EncryptBlock, sgcAES_DecryptBlock위의 모드 및 MAC 유닛을 위해 노출되어 있습니다. 아직 제공되지 않는 모드를 직접 구축할 때만 사용하세요.
ChaCha20sgcChaCha20RFC 8439, 96비트 논스, 32비트 카운터.
XChaCha20sgcXChaCha20192비트 확장 논스로, 대규모로 무작위 논스를 생성해도 안전합니다.
Salsa20 / XSalsa20sgcSalsa20 / sgcXSalsa20이전 세대 스트림 암호 계열이며, 두 논스 크기 모두 지원합니다.
서브키 유도sgcHChaCha20 / sgcHSalsa20X 변형이 논스의 처음 16바이트로부터 서브키를 유도할 때 내부적으로 사용하는 함수입니다.
Poly1305 MACsgcPoly1305 / sgcPoly1305_Verify일회용 인증자, RFC 8439. Poly1305 키는 절대 재사용하지 마세요.
ChaCha20-Poly1305 AEADsgcChaCha20Poly1305_Encrypt / _DecryptTLS 1.3의 두 번째 암호 스위트와 SSH 뒤에 있는 AEAD 암호입니다.
XChaCha20-Poly1305 AEADsgcXChaCha20Poly1305_Encrypt / _Decrypt동일한 AEAD이며 192비트 논스를 사용합니다. libsodium이 crypto_aead_xchacha20poly1305_ietf라고 부르는 구성입니다.

다이제스트, MAC & 비밀번호 해싱

모든 주요 해시 계열과, PBKDF2, HKDF, scrypt, 그리고 Argon2의 세 가지 변형 전부입니다.

기능함수비고
SHA-1 / SHA-2sgcSHA1, sgcSHA224, sgcSHA256, sgcSHA384, sgcSHA512FIPS 180-4. SHA-1은 상호운용을 위해 유지되며, 새로운 서명에는 권장하지 않습니다.
SHA-3sgcSHA3_224 / _256 / _384 / _512FIPS 202, Keccak 스펀지이며 구조적으로 SHA-2와 독립적입니다.
SHAKE128 / SHAKE256sgcSHAKE128 / sgcSHAKE256가변 출력 길이 함수입니다: 원하는 다이제스트 길이를 요청할 수 있습니다.
cSHAKE128 / cSHAKE256sgcCSHAKE128 / sgcCSHAKE256도메인 분리된 SHAKE, NIST SP 800-185, KMAC의 기반입니다.
KMAC128 / KMAC256sgcKMAC128 / sgcKMAC256가변 출력 길이를 갖는 Keccak 기반 MAC입니다.
BLAKE2bsgcBlake2b / sgcBlake2b_KeyedRFC 7693, 최대 64바이트 다이제스트, 내장 키잉(별도의 HMAC 불필요).
BLAKE2ssgcBlake2s / sgcBlake2s_KeyedRFC 7693, 최대 32바이트 다이제스트, 32비트 플랫폼에 최적화.
스트리밍 다이제스트sgcBlake2b_Init/_Update/_Final, Keccak/Blake2s의 동일한 호출한 번에 메모리에 담을 수 없을 만큼 큰 데이터를 해싱할 때 사용합니다.
HMACsgcHMAC_SHA1 / _SHA256 / _SHA384 / _SHA512RFC 2104, SHA-1/2 계열 위의 키 기반 해싱입니다.
RIPEMD-160 / HMAC-RIPEMD160sgcRIPEMD160, sgcHMAC_RIPEMD160ISO/IEC 10118-3와 RFC 2286입니다. Bitcoin 주소가 SHA-256 위에 계층화하는 160비트 다이제스트이며, OpenPGP가 이름으로 지정하는 것이기도 합니다.
PBKDF2sgcPBKDF2, sgcPBKDF2_SHA1 / _SHA256 / _SHA512RFC 8018. 메모리 하드성이 약하므로, 선택할 수 있다면 Argon2id나 scrypt를 우선하세요.
HKDFsgcHKDF_Extract_SHA256 / _SHA384, sgcHKDF_Expand_SHA256 / _SHA384, sgcHKDF_SHA256 / _SHA384RFC 5869, extract-then-expand 키 유도이며, 공유 비밀을 여러 키로 바꾸는 표준적인 방법입니다.
KDF1 / KDF2 / X9.63sgcKDF1, sgcKDF2, sgcKDF_X963ISO 18033-2, IEEE 1363a, ANSI X9.63이 정의하는 카운터 모드 유도 방식으로, RSA-KEM과 ECIES가 이름으로 지정하는 것입니다. KDF1은 0부터, KDF2는 1부터 카운트하며, 이 차이가 실제 상호운용성 버그를 일으킨 적이 있으므로 스펙이 어느 쪽을 의미하는지 확인하세요.
scryptsgcScryptRFC 7914, 메모리 하드 방식으로 PBKDF2보다 GPU/ASIC 공격에 훨씬 강합니다.
Argon2sgcArgon2(d / i / id), 편의 래퍼 sgcArgon2idRFC 9106, Password Hashing Competition 우승작. 선택적 비밀 값(페퍼)과 연관 데이터를 포함하는 전체 인터페이스입니다.
SipHash-2-4sgcSipHash24 / sgcSipHash24_Value해시 테이블 키를 위한 빠른 키 기반 PRF로, 해시 플러딩 서비스 거부 공격에 강합니다.
TLSH 퍼지 해시sgcTLSH, sgcTLSH_Init/_Update/_Final근접 중복 탐지를 위한 로컬리티 민감 해시이며, 암호화 다이제스트가 아닙니다.
TLSH 유사도 점수sgcTLSH_Diff두 TLSH 다이제스트 사이의 거리입니다. 값이 낮을수록 더 유사합니다.

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

RSA를 포함해 서로 다른 다섯 개의 곡선 계열에 걸쳐 서명, 검증, 공유 비밀 유도를 수행합니다.

기능함수비고
Ed25519 서명 / 검증sgcEd25519_Sign / sgcEd25519_Verify, sgcEd25519_PublicKeyRFC 8032. 32바이트 공개 키, 64바이트 서명. 검증은 5.1.7절에 따라 비정규 점과 S >= L을 거부합니다. 서명은 비밀 스칼라와 메시지별 논스에 대해 상수 시간으로 이루어집니다. 고정된 4비트 윈도우를 사용하고, 테이블 항목은 16개 전부를 마스크 아래에서 스캔하여 선택하며, 5.1.4절의 완전 덧셈 공식을 사용합니다. 공개 키는 32바이트 시드에서 만들어집니다.
X25519 키 교환sgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecretCurve25519 위의 RFC 7748 Diffie-Hellman.
Ed448 서명 / 검증sgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_VerifyRFC 8032, 448비트(Goldilocks) EdDSA 곡선입니다.
X448 키 교환sgcX448, sgcX448_PublicKey, sgcX448_SharedSecretCurve448 위의 RFC 7748 Diffie-Hellman.
secp256k1eccSecp256k1과 함께 사용하는 sgcECDSA_SignHash / VerifyHashsgcCrypto_ECCurves 안의 Bitcoin/Ethereum 곡선, SEC 2입니다.
Brainpool P256r1 / P384r1 / P512r1eccBrainpoolP256r1 / P384r1 / P512r1과 함께 사용하는 동일 함수RFC 5639, EU eIDAS 및 정부 프로필에서 흔히 사용됩니다.
NIST P-256 / P-384 / P-521eccP256 / eccP384 / eccP521과 함께 사용하는 동일 함수TsgcECCurve가 이제 일곱 개의 곡선을 명명하므로, 키 생성, 서명, 검증, ECDH, 점 압축 모두 PEM 파일이 아니라 원시 키 바이트로부터 곧바로 NIST 소수 곡선에 도달합니다.
결정적 ECDSA 논스sgcECDSA_SignHash에 내장RFC 6979: 논스가 개인 키와 메시지로부터 유도되므로 RNG 실패 상황이 없습니다.
상수 시간 스칼라 곱셈sgcECDSA_SignHash, sgcECDH_SharedSecret 및 EC 키 생성 내부sgcCrypto_ECCurves의 모든 곡선이 동일한 엔진을 실행합니다. 데이터에 의존하는 단계가 없는 Montgomery 리덕션, 개수가 곡선에서 정해지는 고정 윈도우, 모든 항목을 마스크 아래에서 스캔하여 선택하는 테이블, 어떤 경우에 해당하는지 판단하려고 좌표를 들여다보지 않는 완전 덧셈 공식입니다. sgcCrypto_EC의 JOSE, WebAuthn, E2EE 경로도 같은 코드를 실행합니다.
ECDH(secp256k1 / Brainpool)sgcECDH_SharedSecret동일한 네 곡선 위에서의 공유 비밀입니다.
점 압축sgcEC_Compress / sgcEC_Decompress더 짧은 압축 공개 키 형식을 저장하거나 전송합니다.
JWS로서의 EC(ES256/384/512)sgcECDSA_SignJWS / sgcECDSA_VerifyJWS요청된 비트 길이에 따라 곡선이 자동으로 선택되며, PEM 키로부터 직접 서명/검증합니다. ECCurves의 JOSE 지향 자매 유닛입니다.
범용 ECDHsgcECDH원시 개인 키와 상대방 공개 점으로부터 공유 비밀을 구합니다.
원시 / DER ECDSA 검증sgcECDSA_VerifyRaw / sgcECDSA_VerifyDER원시 (Qx, Qy, r, s) 튜플 또는 DER 인코딩된 서명에 대해 검증합니다.
DER ECDSA 서명 & 변환sgcECDSA_SignDER / sgcECDSA_VerifyDER, sgcECDSA_RawToDER / sgcECDSA_DERToRawX.509, CMS, TLS는 r 다음에 s가 오는 INTEGER의 SEQUENCE인 DER ECDSA-Sig-Value를 사용합니다. JOSE와 WebAuthn은 대신 원시 R || S 쌍을 사용합니다. 곧바로 어느 형태로든 서명하거나, 기존 서명을 두 형태 사이에서 변환할 수 있습니다.
Schnorr 서명(BIP-340)sgcSchnorr_PublicKey, sgcSchnorr_Sign, sgcSchnorr_Verifysecp256k1 전용이며, x-only 32바이트 공개 키와 64바이트 서명을 사용합니다: Taproot, Nostr, Lightning이 사용하는 방식입니다. sgcSchnorr_TaggedHash는 BIP-341과 BIP-342 태그를 같은 구성 위에 만들 수 있도록 노출되어 있습니다.
RSA 서명(PKCS#1 v1.5)sgcRSA_SignPKCS1PEM 개인 키로부터, SHA-1/256/384/512 다이제스트.
RSA 개인 키 연산sgcRSA_SignPKCS1 및 sgcCrypto_RSA_Keys의 나머지 서명과 복호화 호출각 연산은 새로운 무작위 쌍으로 블라인딩되고, 고정 윈도우 거듭제곱과 타이밍이 인수나 데이터에 의존하지 않는 CRT 재결합을 거치며, 결과를 반환하기 전에 공개 지수와 대조해 검사됩니다. CRT 한쪽 절반에 오류가 생기면 서명 한 번만으로 인수가 드러나므로, 불일치할 경우 아무것도 반환되지 않습니다.
RSA 검증(PKCS#1 v1.5 / PSS)sgcRSA_VerifyPKCS1, sgcRSA_VerifyPSS, 그리고 모듈러스/지수 기반의 _Raw 변형RFC 8017. PEM 키 또는 원시 모듈러스와 지수로부터 검증하며, 별도의 키 객체 구성이 필요 없습니다.
RSA 키 생성sgcRSA_GenerateKey원하는 비트 길이, Miller-Rabin 소수성 검사.
RSA-OAEP 암호화sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_DecryptRFC 8017의 최적 비대칭 암호화 패딩입니다.
독립적인 MGF1 해시를 사용하는 RSA-OAEP다섯 매개변수 sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt 오버로드레이블 해시와 MGF1 해시를 별도로 고정합니다. OAEPWithSHA256AndMGF1Padding은 Bouncy Castle에서는 둘 다 SHA-256을 의미하지만 SunJCE에서는 SHA-256과 MGF1-SHA1을 의미하며, 이 불일치가 Java 상호운용이 실패하는 일반적인 원인입니다.
RSA PKCS#1 v1.5 암호화sgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_DecryptRFC 8017 7.2절로, Java가 RSA/ECB/PKCS1Padding이라 부르는 모드입니다. 복호화는 모든 실패에 대해 동일한 경로를 거치므로 패딩 오라클에 아무것도 내주지 않습니다. 새로운 용도로는 OAEP를 선호하세요.
RSA-PSS / PKCS#1 서명sgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / Verify생성된 TsgcRSAPrivateKey로부터 직접 서명합니다.
RSA 키 내보내기sgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, 그리고 대응하는 DER 호출PKCS#1 및 SubjectPublicKeyInfo 인코딩입니다.
PKCS#8 및 SEC 1 키 내보내기sgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeySEC1DER / SEC1PEM, sgcEC_ExportSubjectPublicKeyInfo, sgcEC_ExportPublicKeyPEMJava, .NET, 그리고 대부분의 최신 도구가 기대하는 BEGIN PRIVATE KEY 컨테이너와, SEC 1 BEGIN EC PRIVATE KEY 형태, 그리고 인증서에 들어가는 SubjectPublicKeyInfo까지 다룹니다. 암호화되어 있지 않으므로 결과물은 있는 그대로의 키 자료입니다.
RSA 및 EC 키 가져오기sgcRSA_ImportPrivateKeyDER / PEM, sgcRSA_ImportPublicKeyDER / PEM, sgcEC_ImportPrivateKeyDER / PEM, sgcEC_ImportPublicKeyDER / PEM이전에는 존재하지 않았던 기능입니다: 생성한 키를 파일로 쓸 수는 있어도 다시 읽어들일 수는 없었습니다. 가져오기는 PKCS#1, PKCS#8, SEC 1, SubjectPublicKeyInfo를 DER 또는 PEM으로 받아들이며, 파일에 없는 경우 CRT 매개변수나 공개 점을 다시 계산하고, 잘못된 입력에는 예외 대신 False를 반환하므로 신뢰할 수 없는 파일에도 안전하게 사용할 수 있습니다.
ECIES seal / opensgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_OpenX25519 공개 키에 대한 하이브리드 암호화입니다. 임시 ECDH와 AEAD를 결합해 각 방향마다 한 번의 호출로 처리합니다.

X.509 인증서 & ASN.1

다른 사람이 발급한 인증서를 읽거나, 직접 생성할 수 있으며, 두 경우 모두 아래에 DER 인코더와 디코더가 있습니다.

기능함수비고
DER 리더sgcASN1_Read, sgcASN1_Next, sgcASN1_ContentDER 구조를 노드 단위로 순회합니다.
엄격한 DERsgcASN1_Read, sgcASN1_IsMinimalUnsignedInteger이 유닛이 읽는 모든 구조는 규격상 DER이므로 길이에도 DER 규칙이 적용됩니다. 부정 길이 형식은 거부되고, 짧은 형식으로 표현할 수 있는 길이의 긴 형식도 거부됩니다. INTEGER가 최소 형태로 인코딩되지 않은 ECDSA 서명도 거부되므로, 하나의 서명을 두 가지 방식으로 쓰고 서로 다른 두 값으로 받아들이는 일이 없습니다.
PEM 코덱sgcPEM_Decode / sgcPEM_EncodeRFC 7468, DER을 감싸는 -----BEGIN ... -----END 래퍼입니다.
RSA 키 파싱sgcASN1_ParseRSAPrivateKey / PublicKeyPKCS#1(RFC 8017) 키 구조입니다.
EC 키 파싱sgcASN1_ParseECPrivateKey / PublicKeySEC 1 키 구조입니다.
DER 라이터, 구조체sgcDER_Sequence, sgcDER_Set, sgcDER_Tagged, sgcDER_ContextExplicit / Implicit모든 인증서 필드가 조립되는 빌딩 블록입니다.
DER 라이터, 값sgcDER_Integer, sgcDER_OctetString, sgcDER_BitString, sgcDER_Boolean, sgcDER_Null기본 값 인코더입니다.
DER 라이터, 문자열 & 식별자sgcDER_OID, sgcDER_UTF8String, sgcDER_PrintableString, sgcDER_IA5String, sgcDER_Time객체 식별자, X.509가 사용하는 세 가지 문자열 타입, 그리고 UTCTime/GeneralizedTime입니다.
인증서 파싱sgcX509_Parse전체 인증서 구조입니다: 주체, 발급자, 유효 기간, 공개 키, 확장.
서명 / 체인 검증sgcX509_VerifySignedBy, sgcX509_VerifyChain인증서 하나를 발급자에 대해 검증하거나, DER 인증서 배열을 따라가며 검증합니다.
CRL 파싱 & 폐기 확인sgcX509_CRL_Parse, sgcX509_IsRevoked, sgcX509_CRL_VerifySignedBy인증서 폐기 목록(CRL)을 파싱하고 일련번호를 대조합니다.
이름 형식화sgcX509_SubjectRFC2253, sgcX509_IssuerRFC2253, sgcX509_SubjectOneLine로깅과 화면 표시를 위한 RFC 2253 구분 이름 문자열입니다.
확장 & SANsgcX509_GetExtension, sgcX509_GetCRLDistributionURIs임의의 확장 OID와 CRL 배포 지점 URI를 읽습니다.
자체 서명 인증서 생성sgcX509_CreateSelfSigned전체 TsgcX509Options: 주체 DN, 유효 기간, 일련번호, 경로 길이 제약이 있는 CA 플래그, 키 사용, 확장 키 사용, 주체 대체 이름(IPv4 SAN 포함).
URI 주체 대체 이름TsgcX509Options.URIsuniformResourceIdentifier SAN으로, 호스트 이름이 아니라 SPIFFE 스타일의 서비스 신원을 위한 것입니다. 값은 IA5String 내용으로 그대로 기록되므로 완전한 URI를 전달하세요.
PKCS#10 CSR 생성sgcX509_CreateCSR동일한 옵션 레코드로부터 만드는 RFC 2986 인증서 서명 요청입니다.
EC 서명 인증서 & CSRsgcX509_CreateSelfSignedEx, sgcX509_CreateCSREx, sgcX509_ECKey, sgcX509_RSAKey어느 한 종류의 키든 TsgcX509SignKey로 감싸서 RSA뿐 아니라 EC 키로도 서명할 수 있습니다. EC 인증서는 RSA 인증서의 대략 3분의 1 크기이며 검증 속도도 훨씬 빠릅니다. TsgcX509Options.Hash는 여전히 SHA만 지정하며, 알고리즘은 키를 따라가므로 rhSHA256은 EC 키에서는 ecdsa-with-SHA256을 의미합니다.
CA 발급sgcX509_CreateSigned, sgcX509_CreateSignedFromCSR옵션 레코드에서든 파싱된 PKCS#10 요청에서든, CA 키로 서명된 인증서를 발급합니다.
포스트 퀀텀 서명 키sgcX509_MLDSAKey, sgcX509_SLHDSAKeyML-DSA 또는 SLH-DSA 키를 TsgcX509SignKey로 감싸 sgcX509_CreateSelfSignedEx, sgcX509_CreateCSREx 또는 CA 발급 함수에 넘깁니다. ML-DSA는 RFC 9881, SLH-DSA는 RFC 9909입니다.
ML-KEM 인증서ML-KEM 주체 키를 사용하는 sgcX509_CreateSignedRFC 9935. CA는 ML-KEM 공개 키를 인증할 수 있습니다. ML-KEM은 서명을 할 수 없으므로, 인증서를 발급하기 전에 키 소유를 다른 방법으로 증명해야 합니다.
읽기 시 포스트 퀀텀 키 타입TsgcX509PublicKeyTypex509pkRSA, x509pkEC, x509pkEd25519와 나란히 x509pkMLDSA, x509pkSLHDSA, x509pkMLKEM이 추가되었습니다. sgcX509_Parse, sgcX509_VerifySignedBy, sgcX509_CSR_Verify 모두 이들을 처리합니다.
체인 제약sgcX509_VerifyChainbasicConstraints의 pathLenConstraint와 nameConstraints 확장을 dNSName, iPAddress, rfc822Name, uniformResourceIdentifier, directoryName에 걸쳐 강제합니다.
생성 시 nameConstraintsTsgcX509Options.PermittedDNSNames, ExcludedDNSNames, PermittedIPRanges, ExcludedIPRanges허용 및 제외 서브트리를 CA 인증서에 기록하므로, 위의 체인 검증기가 이를 강제할 수 있습니다.
IPv6 주소 SANTsgcX509Options.IPAddressesIPv4는 물론, RFC 4291의 모든 텍스트 표기 형식으로 IPv6를 받습니다.
PEM 출력sgcX509_ToPEM생성된 DER을 바로 저장 가능한 PEM 파일로 감쌉니다.

ML-KEM, ML-DSA & SLH-DSA

NIST가 2024년 8월 FIPS 203, 204, 205로 확정한 세 가지 알고리즘과, 전환기를 위한 하이브리드 결합기입니다.

기능함수비고
ML-KEM 키 생성sgcMLKEM_GenerateKeyPair, sgcMLKEM_GenerateKeyPairFromSeedFIPS 203, 이전 명칭 Kyber. 세 가지 매개변수 집합: mlkem512, mlkem768, mlkem1024.
ML-KEM 캡슐화sgcMLKEM_Encapsulate, sgcMLKEM_EncapsulateWithSeed새로운 32바이트 공유 비밀과 이를 담는 암호문을 생성합니다. 공개 키는 먼저 FIPS 203 7.2절의 입력 검사를 거치므로, 길이가 잘못되었거나 모듈러스 검사에 실패하는 키는 예외를 발생시킵니다.
ML-KEM 디캡슐화sgcMLKEM_Decapsulate길이가 올바르지만 복호화되지 않는 암호문은 오류 대신 의사난수 비밀(암묵적 거부)을 생성하므로, 타이밍과 오류 동작 어느 쪽으로도 정보가 드러나지 않습니다. 길이가 잘못된 암호문이나 개인 키, 해시 검사에 실패하는 개인 키는 FIPS 203 7.3절의 입력 검사에 따라 먼저 예외를 발생시킵니다.
ML-KEM 크기sgcMLKEM_PublicKeySize, PrivateKeySize, CiphertextSize, SharedSecretSize버퍼 크기 산정을 위한 매개변수 집합별 바이트 길이입니다.
하이브리드 X25519 + ML-KEMsgcHybrid_GenerateKeyPair, sgcHybrid_Encapsulate, sgcHybrid_DecapsulateKDF를 통해 고전적 공유 비밀과 포스트 퀀텀 공유 비밀을 결합해, 결과가 X25519 단독보다 약해지지 않도록 합니다. 오늘날 ML-KEM을 배포하는 권장 방식입니다.
ML-DSA 키 생성sgcMLDSA_GenerateKeyPair, sgcMLDSA_GenerateKeyPairFromSeedFIPS 204, 이전 명칭 Dilithium. 세 가지 매개변수 집합: mldsa44, mldsa65, mldsa87.
ML-DSA 서명 / 검증sgcMLDSA_Sign / sgcMLDSA_VerifyFIPS 204 인터페이스에 따른 결정적 또는 무작위 서명이며, 컨텍스트 문자열을 포함합니다.
ML-DSA 크기sgcMLDSA_PublicKeySize, PrivateKeySize, SignatureSize매개변수 집합별 바이트 길이입니다.
SLH-DSA 키 생성sgcSLHDSA_GenerateKeyPair, sgcSLHDSA_GenerateKeyPairFromSeedFIPS 205, 이전 명칭 SPHINCS+. 상태 비저장 해시 기반 서명으로, 안전성이 격자나 곡선 가정이 아니라 해시 함수에만 의존합니다.
SLH-DSA 서명 / 검증sgcSLHDSA_Sign / sgcSLHDSA_VerifySHAKE 매개변수 집합 6종: slhShake128s, slhShake128f, slhShake192s, slhShake192f, slhShake256s, slhShake256f. s 집합은 작은 서명을, f 집합은 빠른 서명을 우선합니다.
SLH-DSA 크기 & 명명sgcSLHDSA_PublicKeySize, PrivateKeySize, SignatureSize, sgcSLHDSA_ParamsNameSLH-DSA 서명은 집합에 따라 7.8KB에서 49KB까지 큽니다. 서명 전에 버퍼 크기를 맞추세요.
공개 키 내보내기 & 가져오기, DERsgcMLDSA_ExportSubjectPublicKeyInfo / ImportSubjectPublicKeyInfo, 그리고 동일한 sgcMLKEM_* 및 sgcSLHDSA_* 쌍X.509 SubjectPublicKeyInfo이므로, 포스트 퀀텀 공개 키가 RSA나 EC 공개 키와 같은 구조에 들어갑니다. RFC 9881, RFC 9909, RFC 9935입니다.
개인 키 내보내기 & 가져오기, DERsgcMLDSA_ExportPrivateKeyInfo / ImportPrivateKeyInfo 및 sgcMLKEM_*, sgcSLHDSA_* 쌍PKCS#8 OneAsymmetricKey, 버전 0과 1. 가져오기는 키의 일관성을 검사합니다. 내장된 공개 키가 일치하지 않으면 거부되고, 같은 키의 시드 형식과 확장 형식은 서로 일치해야 하며, ML-DSA 키는 저장된 t0와 tr을 재현해야 합니다. SLH-DSA는 시드에서 PK.root를 다시 계산하며 그 비용은 키 생성 한 번 정도이므로, 이 가져오기에는 aVerify 매개변수가 있고 기본값은 True이며, 자체 애플리케이션이 생성한 키에는 False를 전달할 수 있습니다.
PEM 내보내기 & 가져오기sgcMLDSA_ExportPublicKeyPEM, ExportPrivateKeyPEM, ImportPublicKeyPEM, ImportPrivateKeyPEM, 그리고 sgcMLKEM_* 및 sgcSLHDSA_* 세트RFC 7468의 -----BEGIN ... -----END 래퍼이므로, 이 키들도 나머지 PKI와 같은 파일과 도구에 그대로 들어갑니다.
개인 키 형식TsgcPQCPrivateKeyFormatML-DSA와 ML-KEM 개인 키에는 세 가지 형식이 있습니다. pqkfSeed는 시드만 기록하고(ML-DSA는 32바이트, ML-KEM은 64바이트 d||z 시드), pqkfExpanded는 확장된 키를 기록하며, pqkfBoth는 둘 다 담습니다. SLH-DSA의 개인 키 형식은 하나뿐입니다.
시드를 함께 돌려주는 키 생성sgcMLDSA_GenerateKeyPairAndSeed, sgcMLKEM_GenerateKeyPairAndSeed키 쌍과 함께 시드를 돌려주므로, 생성 직후에 시드 형식의 PKCS#8 또는 PEM 파일을 바로 기록할 수 있습니다.
X-Wing 하이브리드 KEMsgcXWing_GenerateKeyPair, sgcXWing_Encapsulate, sgcXWing_Decapsulatedraft-connolly-cfrg-xwing-kem-10: X25519와 ML-KEM-768을 하나의 KEM으로 묶었습니다. 공개 키 1216바이트, 개인 키 32바이트(시드), 암호문 1120바이트, 공유 비밀 32바이트입니다.
TLS 1.3 하이브리드 키 셰어sgcTLSHybrid_ClientKeyShare, sgcTLSHybrid_ServerKeyShare, sgcTLSHybrid_ClientSharedSecret, sgcTLSHybrid_GroupName, sgcTLSHybrid_AvailableRFC 10024의 X25519MLKEM768, SecP256r1MLKEM768, SecP384r1MLKEM1024 그룹입니다(IANA 코드포인트 0x11EC, 0x11EB, 0x11ED). 이들은 독립적인 KEM이 아니라 TLS 키 셰어를 구성할 뿐입니다.
JSON 웹 토큰용 ML-DSAJWTOptions.Algorithms.MLDSA.PrivateKey, PublicKey, Enabled, sgcMLDSA_ExportPublicJWK, sgcMLDSA_ExportPrivateJWK, sgcMLDSA_ImportJWK, sgcMLDSA_ImportJWKAsPEMRFC 9964이며, sgcCrypto_* 유닛이 아니라 sgcHTTP_JWT_MLDSA에 있습니다. JWS 알고리즘은 ML-DSA-44, ML-DSA-65, ML-DSA-87(jwtMLDSA44, jwtMLDSA65, jwtMLDSA87)이고, 클라이언트는 PKCS#8 PEM을, 서버는 SubjectPublicKeyInfo PEM을 사용하며, AKP JSON 웹 키를 지원합니다. 이 경로 어디에도 OpenSSL은 없습니다.
알려진 정답 검증NIST ACVP 벡터ML-KEM 키 생성, 캡슐화, 디캡슐화와 ML-DSA 및 SLH-DSA 키 생성, 서명 생성, 서명 검증은 sgcWebSockets QA 스위트에서 NIST ACVP 알려진 정답 벡터와 대조하여 검사됩니다.

sgcCrypto는 ed25519187이나 SPECK를 제공한다고 주장하지 않습니다. ed25519187은 공개된 명세가 없으며, SPECK는 2018년 ISO 표준화에서 철회되었습니다. 둘 다 여기에는 구현되어 있지 않습니다.

이 유닛들 위에 올린 TLS 1.3 및 TLS 1.2 스택

sgcCrypto 기본 요소 위에 Object Pascal로 작성되어 같은 패키지로 함께 제공됩니다. sgcCrypto_*가 아니라 sgcSSL_NativeTLS* 유닛에 있으므로, 위에서 센 43개에는 포함되지 않습니다.

기능API비고
클라이언트에서 선택TLSOptions.IOHandler := iohNativeTLSOpenSSL, SChannel, 플랫폼 TLS 백엔드를 프로세스 내부의 Pascal 엔진으로 대체합니다. 어떤 타깃에서도 배포할 것이 없습니다.
서버에서 선택SSLOptions.IOHandler := iohNativeTLS기본 Indy 서버 엔진은 물론 IOCP와 EPOLL 엔진에서도 동작합니다.
프로토콜 버전TLSOptions.Version허용되는 최저 버전입니다. tls1_2 또는 tlsUndefined는 TLS 1.3과 TLS 1.2를 모두 협상하고, tls1_3은 TLS 1.3만 허용하며, tls1_0이나 tls1_1은 구성 오류를 발생시킵니다. 서버에서는 SSLOptions.Version이 동일하게 동작합니다. TLS 1.2만 사용하려면 CipherSuites에 TLS 1.2 스위트만 나열하세요.
키 교환 그룹TLSOptions.NativeTLS_Options.Groups콜론으로 구분하며 OpenSSL 방식입니다. 기본값은 X25519MLKEM768:X25519:secp256r1:secp384r1이며, 상대가 동의하면 핸드셰이크는 항상 포스트 퀀텀 하이브리드가 됩니다. SGC_CRYPTO_FIPS로 빌드하면 대신 SecP256r1MLKEM768:SecP384r1MLKEM1024:secp256r1:secp384r1이 기본값이 됩니다. 세 하이브리드 그룹은 TLS 1.3에만 있으므로, TLS 1.2 연결에서는 X25519, secp256r1 또는 secp384r1을 사용합니다.
암호 스위트TLSOptions.NativeTLS_Options.CipherSuites콜론으로 구분하며 OpenSSL 방식입니다. 기본값은 TLS 1.3에서 TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256이며, TLS 1.2에서는 ECDHE_ECDSA와 ECDHE_RSA를 AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305와 함께 추가로 제공합니다. ECDHE AES-CBC와 RSA 키 교환은 직접 지정했을 때만 사용되며, TLS 1.2 스위트는 모두 합쳐 20개입니다. SGC_CRYPTO_FIPS로 빌드하면 ChaCha20-Poly1305와 RSA 키 교환이 빠집니다.
신뢰 루트TLSOptions.RootCertFile, TLSOptions.NativeTLS_Options.UseSystemRoots루트는 RootCertFile에서 가져옵니다. 운영 체제가 이미 신뢰하는 루트를 추가하려면 UseSystemRoots를 True로 설정하세요. Windows에서는 ROOT 저장소이고, 그 밖의 모든 플랫폼에서는 표준 위치들 중 처음 발견되는 CA 번들 파일입니다. macOS나 iOS 키체인, Android 저장소는 읽지 않습니다. 기본값은 꺼짐이며, 그래서 RootCertFile이 계속 원본이 됩니다. SSLOptions의 같은 속성은 서버가 검증하는 클라이언트 인증서에 적용됩니다.
체인 구성상대가 보내는 인증서 체인체인에서 리프부터 신뢰 루트까지의 경로를 검색하므로, 추가 인증서와 임의의 순서도 RFC 8446 4.4.2절이 요구하는 대로 허용됩니다. 검색은 백트래킹을 하므로, 올바른 발급자를 지목하지만 어디에도 이르지 못하는 인증서가 그 뒤의 유효한 경로를 더 이상 가리지 않습니다. 해지 확인과 인증서 정책은 검사하지 않습니다.
프로토콜 범위RFC 8446, RFC 5246TLS 1.3과 TLS 1.2를 지원합니다. TLS 1.1, TLS 1.0, SSL은 지원하지 않습니다. TLS 1.2는 RFC 7627의 확장 마스터 시크릿과 양쪽 모두에 적용되는 RFC 8446의 다운그레이드 방지를 사용하며, 재협상과 SHA-1 서명(RFC 9155)을 거부하고, CBC 레코드를 상수 시간으로 검사합니다.
구현되지 않은 항목n/a세션 재개와 PSK가 없고, 0-RTT도 QUIC도 없습니다.
피어 검증 이벤트OnSSLVerifyPeer이 엔진에서는 사용할 수 없으며, 엔진이 자체 검증 훅을 가지고 있습니다. 코드가 이 이벤트에 의존한다면 OpenSSL이나 플랫폼 백엔드를 계속 사용하세요.

일회용 비밀번호, 코덱 & 암호화된 ZIP

유틸리티 계층입니다. 일회용 코드, 다른 모든 패밀리가 의지하는 인코딩, 그리고 WinZip AES 암호화입니다.

기능함수비고
HOTPsgcHOTPRFC 4226, 카운터 기반 일회용 비밀번호입니다.
TOTPsgcTOTP, sgcTOTP_FromBase32RFC 6238, 시간 기반 일회용 비밀번호입니다. Base32 변형은 인증 앱이 표시하는 그대로의 비밀 값을 받아들입니다.
TOTP 검증sgcTOTP_Verify제출된 코드를 여러 스텝의 윈도우에 걸쳐 상수 시간으로 확인하므로, 결과도 그 위치도 타이밍을 통해 드러나지 않습니다. 재전송 자체를 막지는 않으므로, 사용된 코드 추적은 호출자가 담당합니다.
상수 시간 비교sgcConstantTimeEquals라이브러리 전반에서 태그와 MAC 비교에 사용됩니다.
안전한 초기화sgcSecureZero키 자료가 메모리에 남지 않도록 바이트 버퍼를 덮어씁니다.
HexsgcHexEncode / sgcHexDecode소문자 hex, 대소문자 구분 없는 디코딩입니다.
Base64urlsgcBase64UrlEncode / sgcBase64UrlDecodeRFC 4648 5절, 패딩 없음. JWT와 JOSE가 사용하는 인코딩입니다.
Base32sgcBase32Encode / sgcBase32DecodeRFC 4648 6절. TOTP 비밀 값과 인증 앱이 사용하는 인코딩입니다.
WinZip AES 키 유도sgcZipAE2_DeriveKeys비밀번호와 솔트로부터 PBKDF2 기반의 키, 인증 키, 비밀번호 검증기를 생성합니다.
WinZip AES 암호화 / 복호화sgcZipAE2_Encrypt / sgcZipAE2_DecryptAE-1과 AE-2, AES-128/192/256, TsgcZipAESStrength를 통한 항목별 솔트 크기 지정.
WinZip 항목 패킹sgcZipAE2_PackEntry / sgcZipAE2_UnpackEntry솔트, 검증기, 암호문, 인증 코드를 디스크 레이아웃으로 결합합니다.
WinZip 추가 필드sgcZipAE2_BuildExtraField / sgcZipAE2_ParseExtraFieldZIP 항목을 AES 암호화로 표시하는 0x9901 추가 필드입니다.
레거시 해시(상호운용 전용)sgcMD4, sgcMD5, sgcHMAC_MD5이전 형식과 프로토콜을 읽기 위해 유지됩니다. 새로운 설계에는 사용하지 마세요.
레거시 암호(상호운용 전용)sgcDES_EncryptECB / sgcDES_DecryptECB, sgcDES_NTLM7to8DES-ECB와 DES 기반 NTLM 키 확장 단계입니다. 둘 다 철회되었지만(FIPS 46-3), 레거시 상호운용을 위해 유지됩니다.
안전한 난수 바이트sgcRandomBytes / sgcRandomFillMSWINDOWS에서는 BCryptGenRandom (Windows CNG), 그 외에는 /dev/urandom이며, 어느 쪽이든 호출은 하나입니다.

sgcCrypto가 실행되는 곳

지원 범위를 정확하게 밝힙니다.

영역세부 사항
운영체제sgcVer.inc에서 SGC_CRYPTO를 감싸는 MSWINDOWS 가드나 다른 어떤 플랫폼 가드도 없습니다. 43개 유닛 모두 Win32, Win64, Linux64, macOS, iOS, Android용으로 컴파일됩니다.
난수 소스플랫폼을 인식하는 유일한 유닛인 sgcCrypto_Random은 동일한 sgcRandomBytes 호출 뒤에서 대상별로 CSPRNG를 선택합니다: MSWINDOWS에서는 BCryptGenRandom (Windows CNG), POSIX 대상에서는 /dev/urandom입니다. 바이트는 운영 체제의 난수 생성기에서 직접 가져오며, 그 위에 자체 생성기를 두지 않습니다. Windows에서는 BCryptGenRandom을 사용할 수 없을 때만 RtlGenRandom, 그다음 CryptGenRandom을 사용하며, 어떤 소스도 읽을 수 없으면 약한 바이트를 반환하는 대신 예외를 발생시킵니다.
FIPS 모드기본적으로 꺼져 있는 선택적 조건부 정의 SGC_CRYPTO_FIPS로, 컴파일 시점에 43개 유닛에서 승인되지 않은 알고리즘을 모두 제거하고 런타임에 몇 가지 매개변수 규칙을 검사합니다. 라이브러리를 FIPS 승인 알고리즘 범위 안에 유지하지만, sgcCrypto는 FIPS 140-3 검증을 받은 모듈이 아니며 이 정의가 검증을 주장하는 것도 아닙니다. FIPS 모드
DelphiDelphi 7부터 RAD Studio 13 Florence까지입니다. 어디에서도 네이티브 64비트 정수 타입이 있다고 가정하지 않습니다. sgcCrypto_Int64와 sgcCrypto_BigInteger 안의 TsgcBigInt 타입이 해시, 곡선, 포스트 퀀텀 유닛에 필요한 연산을 에뮬레이션합니다.
C++ Builder생성된 헤더를 통해 C++ Builder에서도 동일한 소스 트리를 사용합니다.
디자인 타임 흔적없습니다. sgcCrypto_Reg.pas도 없고, RegisterComponents로 등록되는 것도 없으며, 컴포넌트 팔레트 페이지에 나타나는 유닛도 없습니다.
의존성OpenSSL 바인딩도, 외부 DLL도 없습니다. 모든 기본 요소는 참조하는 유닛 안에서 직접 Object Pascal로 구현되어 있습니다.
소스 코드모든 유료 등급, 그리고 sgcCrypto가 이미 포함된 에디션 패키지에 전체 Object Pascal 소스가 포함됩니다.
재배포직접 빌드한 바이너리는 좌석당 또는 서버당 런타임 비용 없이 로열티 없이 재배포할 수 있습니다.
최고의 가성비: All-Access모든 eSeGeCe 제품과 프리미엄 지원이 포함되어 연 €1,059부터 이용할 수 있어요.
All-Access 가격 보기

sgcCrypto로 구축을 시작하세요

무료 체험판을 다운로드하고 함수를 호출해 보세요. 컴포넌트는 필요 없습니다.