Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
perl-CryptX | Kitploit
도구/GitHubGitHub/dcit/perl-cryptx
Password CrackingEncryption/Decryption ToolsHash AnalysisCryptographyUtilities & FrameworksAuthentication
GitHubdcit/perl-cryptx

perl-CryptX

저장소 보기
412610일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

이름

CryptX - 암호화 툴킷

개요

CryptX는 배포판의 진입점입니다. 일반적인 코드에서는 아래에 나열된 구체적인 모듈 중 하나를 로드합니다.

root@kitploit:~
## one-shot hashing
use Crypt::Digest qw(digest_data_hex);
my $sha256 = digest_data_hex('SHA256', 'hello world');

## classic AES-CBC encryption with padding
use Crypt::Mode::CBC;
my $cbc = Crypt::Mode::CBC->new('AES');
my $iv = random_bytes(16); # 16-byte AES block-size IV
my $cbc_ciphertext = $cbc->encrypt('hello world', $key, $iv);

## authenticated encryption (AEAD) with AES
use Crypt::AuthEnc::GCM qw(gcm_encrypt_authenticate);
my $key = random_bytes(32);   # 32-byte AES-256 key
my $nonce = random_bytes(12); # 12-byte unique nonce
my ($ciphertext, $tag) = gcm_encrypt_authenticate('AES', $key, $nonce, 'header', 'hello world');

## message authentication
use Crypt::Mac::HMAC qw(hmac_hex);
my $mac = hmac_hex('SHA256', $key, 'hello world');

## secure random data + UUID helpers
use Crypt::PRNG qw(random_bytes random_string);
use Crypt::Misc qw(random_v4uuid random_v7uuid);
my $salt = random_bytes(16);
my $token = random_string(24);
my $uuid4 = random_v4uuid();
my $uuid7 = random_v7uuid();

## classic password-based key derivation
use Crypt::KeyDerivation qw(pbkdf2);
my $dk = pbkdf2('password', $salt, 100_000, 'SHA256', 32);

## bare stream cipher (authenticate separately)
use Crypt::Stream::ChaCha;
my $stream = Crypt::Stream::ChaCha->new($key, $nonce);
my $stream_ciphertext = $stream->crypt('hello world');

## modern signatures
use Crypt::PK::Ed25519;
my $signer = Crypt::PK::Ed25519->new->generate_key;
my $sig = $signer->sign_message('hello world');
my $ok = $signer->verify_message($sig, 'hello world');

## key agreement
use Crypt::PK::X25519;
my $alice = Crypt::PK::X25519->new->generate_key;
my $bob = Crypt::PK::X25519->new->generate_key;
my $shared_secret = $alice->shared_secret($bob);

설명

번들로 포함된 LibTomCrypt 라이브러리를 기반으로 구축된 Perl 암호화 모듈입니다. 이 배포판에는 LibTomCrypt가 내부적으로 사용하는 번들 LibTomMath 라이브러리를 기반으로 구축된 Math::BigInt 백엔드인 Math::BigInt::LTM도 포함되어 있습니다.

이 모듈은 주로 최상위 배포/문서 페이지 역할을 합니다. 실제 작업에는 아래에 나열된 구체적인 모듈 중 하나를 사용하세요.

알고리즘 선택 가이드

인증 암호화 (AEAD)

새로운 설계에서는 단순 암호 모드보다 인증 암호화(AEAD)를 선호하세요:

  • ChaCha20-Poly1305 (Crypt::AuthEnc::ChaCha20Poly1305) - 빠르고 일정 시간(constant-time)에 동작하며 널리 배포되어 있습니다 (TLS 1.3, WireGuard, SSH). 기본 AEAD 선택으로 사용하세요.
  • XChaCha20-Poly1305 (Crypt::AuthEnc::XChaCha20Poly1305) - 확장된 24바이트 nonce 변형입니다. nonce를 무작위로 생성할 때 ChaCha20-Poly1305보다 선호하세요.
  • AES-GCM (Crypt::AuthEnc::GCM) - AES의 표준 AEAD 모드입니다. 최신 CPU에서 하드웨어 가속을 지원합니다. 고유한 nonce가 필요하며, nonce를 재사용하면 보안이 완전히 무너집니다.
  • AES-SIV (Crypt::AuthEnc::SIV) - 결정론적 AEAD로, nonce 오용에 강합니다. 약간 느리지만 nonce 고유성을 보장할 수 없을 때 더 안전합니다.
  • AES-GCM-SIV (Crypt::AuthEnc::GCMSIV) - nonce 오용에 강한 AEAD입니다 (RFC 8452). AES-SIV보다 빠르며, nonce 재사용 안전성과 함께 GCM과 유사한 성능이 필요할 때 선택하세요.
  • AES-OCB (Crypt::AuthEnc::OCB) - 매우 빠른 단일 패스 AEAD입니다. 해당 관할권의 특허 상태를 확인하세요.
  • AES-EAX (Crypt::AuthEnc::EAX) - CTR+OMAC 기반의 2패스 AEAD입니다. 특허가 없으며 nonce 길이 제한도 없습니다.
  • AES-CCM (Crypt::AuthEnc::CCM) - WiFi(WPA2) 및 Bluetooth에서 사용됩니다. 평문 길이를 미리 알고 있어야 합니다.

암호학적으로 안전한 난수 및 UUID

  • 난수 바이트 / 문자열 (Crypt::PRNG) - 솔트, 키, nonce, 토큰 및 기타 모든 비밀 난수 값에 사용하세요. 함수형 헬퍼인 random_bytes, random_bytes_hex, random_bytes_b64, random_bytes_b64u, random_string, random_string_from은 대부분의 사용 사례를 충족합니다. OO API와 알고리즘별 래퍼(Crypt::PRNG::ChaCha20, Crypt::PRNG::Fortuna 등)는 주로 결정적 스트림 또는 특정 PRNG와의 상호 운용성을 위한 것입니다.
  • UUID ("random_v4uuid" in Crypt::Misc, "random_v7uuid" in Crypt::Misc) - 불투명한 무작위 식별자에는 random_v4uuid를 사용하세요. 밀리초 단위의 생성 시간순으로 정렬되는 대략적인 시간 순서 식별자가 필요하면 random_v7uuid를 사용하세요. UUID는 식별자이지 비밀 난수 바이트를 대체하는 것이 아닙니다.

스트림 암호

스트림 암호는 블록 패딩 없이 데이터를 바이트 단위로 암호화합니다. 대부분의 애플리케이션에서는 암호화와 인증을 함께 제공하는 AEAD 모드(위 참조)를 선호하세요. 단순 스트림 암호는 인증을 별도로 처리할 때만 사용하세요.

  • ChaCha (Crypt::Stream::ChaCha) - 기본 스트림 암호 선택입니다. 내장 MAC이 없는 ChaCha20-Poly1305와 동일한 코어입니다.
  • XChaCha (Crypt::Stream::XChaCha) - ChaCha의 24바이트 nonce 확장 변형입니다. nonce를 무작위로 생성할 때 선호하세요.
  • Salsa20 / XSalsa20 (Crypt::Stream::Salsa20, Crypt::Stream::XSalsa20) - ChaCha의 전신입니다. 새 설계에서는 ChaCha를 선호하고, Salsa20은 상호 운용성(예: NaCl/libsodium)을 위해서만 사용하세요.
  • RC4 (Crypt::Stream::RC4) - 보안이 깨졌으므로 새 설계에는 사용하지 마세요. 레거시 상호 운용성을 위해서만 제공됩니다.
  • Rabbit, Sober128, Sosemanuk (Crypt::Stream::Rabbit, Crypt::Stream::Sober128, Crypt::Stream::Sosemanuk) - eSTREAM 포트폴리오의 틈새 암호입니다. 특정 프로토콜에서 요구하지 않는 한 ChaCha를 사용하세요.

블록 암호 모드 (인증 없음)

인증을 별도로 처리하거나 인증이 필요 없는 경우에만 사용하세요:

  • CTR (Crypt::Mode::CTR) - 블록 암호를 스트림 암호로 변환합니다. 병렬화가 가능합니다.
  • CBC (Crypt::Mode::CBC) - 고전적인 모드로, 패딩이 필요합니다. CTR 또는 AEAD 모드를 선호하세요.
  • ECB (Crypt::Mode::ECB) - 대부분의 용도에 안전하지 않습니다. 각 블록이 독립적으로 암호화됩니다.

개별 Crypt::Cipher::AES, Crypt::Cipher::Twofish 등의 모듈은 원시 단일 블록 암호화를 구현하며 직접 사용되는 경우는 드뭅니다. 거의 모든 경우 AEAD 모드(Crypt::AuthEnc::GCM, Crypt::AuthEnc::CCM) 또는 블록 암호 모드(Crypt::Mode::CBC, Crypt::Mode::CTR)를 통해 사용해야 합니다. 암호를 선택할 때 AES가 기본값이며, 대부분의 최신 CPU에서 하드웨어 가속을 지원합니다.

해시 함수

  • SHA-256 / SHA-384 / SHA-512 (Crypt::Digest::SHA256 등) - 일반적인 해싱의 기본 선택입니다. 널리 지원되며 잘 분석되어 있습니다.
  • SHA3-256 / SHA3-512 (Crypt::Digest::SHA3_256 등) - 완전히 다른 구조(Keccak 스펀지)를 가진 SHA-2의 대안입니다.
  • BLAKE2b / BLAKE2s (Crypt::Digest::BLAKE2b_256 등) - 특히 소프트웨어 구현에서 매우 빠릅니다. BLAKE2b는 64비트 플랫폼용, BLAKE2s는 32비트용입니다.
  • SHAKE / TurboSHAKE / KangarooTwelve - 확장 가능 출력 함수(XOF)입니다. 가변 길이 출력이 필요할 때 사용하세요.

체크섬

Crypt::Checksum::CRC32 및 Crypt::Checksum::Adler32는 우발적 손상 감지와 같은 비적대적 무결성 검사에만 사용하세요. 이들은 암호화 무결성 또는 인증 메커니즘이 아닙니다. 암호화 용도로는 Crypt::Digest, Crypt::Mac 또는 Crypt::AuthEnc의 AEAD 모드를 선호하세요.

메시지 인증 코드

  • HMAC (Crypt::Mac::HMAC) - 표준 MAC 구조입니다. 모든 해시와 함께 작동합니다. 기본값으로 HMAC-SHA256을 사용하세요.
  • Poly1305 (Crypt::Mac::Poly1305) - 일회용 MAC으로 매우 빠릅니다. ChaCha20-Poly1305의 일부로 사용됩니다. 메시지마다 고유한 키가 필요합니다.
  • BLAKE2b-MAC (Crypt::Mac::BLAKE2b) - 키 기반 BLAKE2입니다. 소프트웨어 구현에서 HMAC-SHA256보다 빠릅니다.
  • CMAC/OMAC (Crypt::Mac::OMAC) - 블록 암호 기반 MAC입니다. AES는 이미 있지만 해시 함수가 없을 때 사용하세요.

공개 키 암호

  • Ed25519 (Crypt::PK::Ed25519) - 현대적인 디지털 서명입니다. 빠르고 일정 시간에 동작하며 키/서명이 작습니다. 새로운 서명 방식의 기본 선택입니다.
  • Ed448 (Crypt::PK::Ed448) - Ed25519보다 높은 보안 여유(~224비트 vs ~128비트)를 제공합니다.
  • X25519 (Crypt::PK::X25519) - 타원 곡선 Diffie-Hellman 키 합의입니다. 키 교환의 기본 선택입니다.
  • X448 (Crypt::PK::X448) - X25519보다 높은 보안 여유를 제공합니다.
  • ECDSA (Crypt::PK::ECC) - 널리 사용됩니다 (TLS, 비트코인). 상호 운용성을 위해 ECDSA가 필요하지 않다면 새 설계에서는 Ed25519를 선호하세요.
  • RSA (Crypt::PK::RSA) - 레거시이지만 매우 널리 사용됩니다. 최소 2048비트 키를 사용하고 4096비트를 권장합니다. 암호화에는 OAEP, 서명에는 PSS를 선호하세요.
  • DSA (Crypt::PK::DSA) - 레거시입니다. Ed25519 또는 ECDSA를 선호하세요.
  • DH (Crypt::PK::DH) - 고전적인 Diffie-Hellman입니다. 새 설계에서는 X25519를 선호하세요.

키 파생 / 비밀번호 해싱

  • HKDF ("hkdf" in Crypt::KeyDerivation) - 추출 후 확장(extract-then-expand) 방식의 KDF입니다. 공유 비밀(예: ECDH 이후)에서 키를 파생하는 데 사용하세요.
  • Argon2 ("argon2_pbkdf" in Crypt::KeyDerivation) - 메모리 하드(memory-hard) 비밀번호 해싱입니다. 비밀번호 저장에 권장되는 선택입니다.
  • Bcrypt ("bcrypt_pbkdf" in Crypt::KeyDerivation) - 주로 bcrypt 기반 키 파생을 특별히 요구하는 형식 및 프로토콜(예: 일부 OpenSSH 워크플로)과의 호환성을 위해 사용하세요. 새로운 비밀번호 저장 설계에서는 Argon2를 선호하세요.
  • Scrypt ("scrypt_pbkdf" in Crypt::KeyDerivation) - 메모리 하드 KDF입니다. 가능하면 Argon2를 사용하세요.
  • PBKDF2 ("pbkdf2" in Crypt::KeyDerivation) - 널리 지원되지만 CPU 강도만 제공합니다. 가능하면 Argon2 또는 Scrypt를 사용하세요.
  • PBKDF1 ("pbkdf1" in Crypt::KeyDerivation, "pbkdf1_openssl" in Crypt::KeyDerivation) - 레거시 파생 전용입니다. 이전 형식과의 상호 운용성을 위해 유지하되, 새 설계에는 사용하지 마세요.

오류 처리

대부분의 CryptX 모듈은 croak(Carp)을 호출하여 오류를 보고합니다. 잘못된 매개변수, 지원되지 않는 알고리즘, 잘못된 키 크기, 잘못된 형식의 입력 및 내부 라이브러리 오류는 일반적으로 설명 메시지와 함께 croak합니다. eval 또는 Try::Tiny로 예외를 포착하세요.

일부 검증 스타일 헬퍼는 croak 대신 반환 값을 사용합니다. 가장 중요한 예는 인증 암호화 모듈 Crypt::AuthEnc::*의 *_decrypt_verify 함수입니다. 인증에 실패하면 undef를 반환하며, 이는 암호문이 변조되었거나 잘못된 키/nonce가 사용되었음을 나타냅니다. 다른 모듈의 일부 파서/디코더 헬퍼도 잘못된 형식의 입력에 대해 undef 또는 false를 반환하므로, 정확한 실패 의미가 필요하면 해당 모듈의 POD를 확인하세요.

모듈 맵

  • 최상위 계열 모듈

    Crypt::Cipher, Crypt::Mode, Crypt::AuthEnc, Crypt::Digest, Crypt::Mac, Crypt::Checksum, Crypt::PRNG, Crypt::PK, Crypt::KeyDerivation, Crypt::Misc, Crypt::ASN1

  • 대칭 암호

    Crypt::Cipher::AES, Crypt::Cipher::Anubis, Crypt::Cipher::ARIA, Crypt::Cipher::Blowfish, Crypt::Cipher::Camellia, Crypt::Cipher::CAST5, Crypt::Cipher::DES, Crypt::Cipher::DES_EDE, Crypt::Cipher::IDEA, Crypt::Cipher::KASUMI, Crypt::Cipher::Khazad, Crypt::Cipher::MULTI2, Crypt::Cipher::Noekeon, Crypt::Cipher::RC2, , , , , , , , , , , , ,

진단 함수

이 저수준 함수들은 번들된 LibTomCrypt 빌드의 세부 정보를 노출합니다. 문제 해결 및 버그 보고용으로 사용되며, 일반적인 용도가 아닙니다.

ltc_build_settings

root@kitploit:~
my $str = CryptX::ltc_build_settings();

번들된 LibTomCrypt 라이브러리가 빌드될 때 활성화된 모든 컴파일 타임 옵션(암호, 해시, MAC, PK 알고리즘, 컴파일러 플래그 등)을 설명하는 여러 줄 문자열을 반환합니다.

ltc_mp_name

root@kitploit:~
my $name = CryptX::ltc_mp_name();
# e.g. "LTM" (LibTomMath)

사용 중인 수학 공급자 백엔드의 이름을 반환합니다.

ltc_mp_bits_per_digit

root@kitploit:~
my $bits = CryptX::ltc_mp_bits_per_digit();
# e.g. 60

수학 공급자가 사용하는 자릿수당 비트 수를 반환합니다.

Math::BigInt 백엔드

CryptX의 일부는 번들된 LibTomMath 라이브러리를 기반으로 하는 Math::BigInt 백엔드인 Math::BigInt::LTM입니다. 이는 위의 암호화 API와는 별개이지만, 동일한 배포판에 포함되어 배포되며 LibTomCrypt가 의존하는 동일한 대정수 엔진을 사용합니다.

라이선스

이 프로그램은 자유 소프트웨어입니다. Perl 자체와 동일한 조건으로 재배포하거나 수정할 수 있습니다.

저작권

저작권 (c) 2013-2026 DCIT, a.s. https://www.dcit.cz / Karel Miko

도구 다운로드
Crypt::Cipher::RC5
Crypt::Cipher::RC6
Crypt::Cipher::SAFERP
Crypt::Cipher::SAFER_K128
Crypt::Cipher::SAFER_K64
Crypt::Cipher::SAFER_SK128
Crypt::Cipher::SAFER_SK64
Crypt::Cipher::SEED
Crypt::Cipher::SM4
Crypt::Cipher::Serpent
Crypt::Cipher::Skipjack
Crypt::Cipher::Twofish
Crypt::Cipher::XTEA
  • 블록 암호 모드

    Crypt::Mode::CBC, Crypt::Mode::CFB, Crypt::Mode::CTR, Crypt::Mode::ECB, Crypt::Mode::OFB

  • 스트림 암호

    Crypt::Stream::RC4, Crypt::Stream::ChaCha, Crypt::Stream::XChaCha, Crypt::Stream::Salsa20, Crypt::Stream::XSalsa20, Crypt::Stream::Sober128, Crypt::Stream::Sosemanuk, Crypt::Stream::Rabbit

  • 인증 암호화 모드

    Crypt::AuthEnc::CCM, Crypt::AuthEnc::EAX, Crypt::AuthEnc::GCM, Crypt::AuthEnc::GCMSIV, Crypt::AuthEnc::OCB, Crypt::AuthEnc::ChaCha20Poly1305, Crypt::AuthEnc::XChaCha20Poly1305, Crypt::AuthEnc::SIV

  • 해시 함수Crypt::Digest::BLAKE2b_160, Crypt::Digest::BLAKE2b_256, Crypt::Digest::BLAKE2b_384, Crypt::Digest::BLAKE2b_512, Crypt::Digest::BLAKE2s_128, Crypt::Digest::BLAKE2s_160, Crypt::Digest::BLAKE2s_224, Crypt::Digest::BLAKE2s_256, Crypt::Digest::CHAES, Crypt::Digest::MD2, Crypt::Digest::MD4, Crypt::Digest::MD5, Crypt::Digest::RIPEMD128, Crypt::Digest::RIPEMD160, Crypt::Digest::RIPEMD256, Crypt::Digest::RIPEMD320, Crypt::Digest::SHA1, Crypt::Digest::SHA224, Crypt::Digest::SHA256, Crypt::Digest::SHA384, Crypt::Digest::SHA512, Crypt::Digest::SHA512_224, Crypt::Digest::SHA512_256, Crypt::Digest::Tiger192, Crypt::Digest::Whirlpool, Crypt::Digest::Keccak224, Crypt::Digest::Keccak256, Crypt::Digest::Keccak384, Crypt::Digest::Keccak512, Crypt::Digest::SHA3_224, Crypt::Digest::SHA3_256, Crypt::Digest::SHA3_384, Crypt::Digest::SHA3_512, Crypt::Digest::SHAKE, Crypt::Digest::TurboSHAKE, Crypt::Digest::KangarooTwelve, Crypt::Digest::SM3

  • 체크섬

    Crypt::Checksum::Adler32, Crypt::Checksum::CRC32

  • 메시지 인증 코드

    Crypt::Mac::BLAKE2b, Crypt::Mac::BLAKE2s, Crypt::Mac::F9, Crypt::Mac::HMAC, Crypt::Mac::KMAC, Crypt::Mac::OMAC, Crypt::Mac::Pelican, Crypt::Mac::PMAC, Crypt::Mac::XCBC, Crypt::Mac::Poly1305

  • 공개 키 암호

    Crypt::PK::RSA, Crypt::PK::DSA, Crypt::PK::ECC, Crypt::PK::DH, Crypt::PK::Ed25519, Crypt::PK::X25519, Crypt::PK::Ed448, Crypt::PK::X448

  • 암호학적으로 안전한 난수 생성기

    Crypt::PRNG::Fortuna, Crypt::PRNG::Yarrow, Crypt::PRNG::RC4, Crypt::PRNG::Sober128, Crypt::PRNG::ChaCha20

  • 키 유도 함수

    Crypt::KeyDerivation

  • ASN.1 파서

    Crypt::ASN1

    Crypt::ASN1은 커스텀 ASN.1 / DER 파싱 또는 인코딩이 필요할 때만 사용하세요. 대부분의 일반적인 키 및 인증서 형식은 이미 PK 모듈에서 처리됩니다.

  • 기타 헬퍼

    Crypt::Misc (base64/base32/base58 코덱, PEM 헬퍼, 상수 시간 비교, UUID 생성, 옥텟 증가 헬퍼 및 관련 유틸리티 함수)