Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
perl-CryptX — Perl-криптографический набор инструментов, предоставляющий симметричные шифры, режимы AEAD, хеш-функции, MAC-алгоритмы, криптографию с открытым ключом, вывод ключей и безопасную генерацию случайных чисел через встроенную библиотеку LibTomCrypt. | Kitploit
Инструменты/GitHubGitHub/dcit/perl-cryptx
Взлом паролейИнструменты шифрования/дешифрованияАнализ хэшейКриптографияУтилиты и фреймворкиАутентификация
GitHubdcit/perl-cryptx

perl-CryptX

Perl-криптографический набор инструментов, предоставляющий симметричные шифры, режимы AEAD, хеш-функции, MAC-алгоритмы, криптографию с открытым ключом, вывод ключей и безопасную генерацию случайных чисел через встроенную библиотеку LibTomCrypt.

Репозиторий
412648 дней назадПроверено 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);

ОПИСАНИЕ

Perl-модули для криптографии, построенные на встроенной библиотеке LibTomCrypt. Дистрибутив также включает Math::BigInt::LTM, бэкенд для Math::BigInt, построенный на встроенной библиотеке LibTomMath, используемой внутри LibTomCrypt.

Этот модуль в основном служит верхнеуровневой страницей дистрибутива/документации. Для реальной работы используйте один из конкретных модулей, перечисленных ниже.

Руководство по выбору алгоритмов

Аутентифицированное шифрование (AEAD)

Для новых разработок предпочитайте аутентифицированное шифрование (AEAD) обычным режимам шифрования:

  • ChaCha20-Poly1305 (Crypt::AuthEnc::ChaCha20Poly1305) — быстрый, работающий за константное время, широко применяемый (TLS 1.3, WireGuard, SSH). Используйте его как вариант AEAD по умолчанию.
  • XChaCha20-Poly1305 (Crypt::AuthEnc::XChaCha20Poly1305) — вариант с расширенным 24-байтовым nonce. Предпочитайте его ChaCha20-Poly1305, когда nonce генерируются случайно.
  • AES-GCM (Crypt::AuthEnc::GCM) — стандартный режим AEAD для AES. Аппаратно ускоряется на современных CPU. Требует уникальных nonce; повторное использование nonce полностью разрушает безопасность.
  • AES-SIV (Crypt::AuthEnc::SIV) — детерминированный AEAD, устойчивый к неправильному использованию nonce. Несколько медленнее, но безопаснее, когда уникальность nonce не может быть гарантирована.
  • AES-GCM-SIV (Crypt::AuthEnc::GCMSIV) — AEAD, устойчивый к неправильному использованию nonce (RFC 8452). Быстрее AES-SIV; выбирайте его, когда нужна производительность как у GCM с безопасностью при повторном использовании nonce.
  • AES-OCB (Crypt::AuthEnc::OCB) — очень быстрый однопроходный AEAD. Проверьте патентный статус в вашей юрисдикции.
  • AES-EAX (Crypt::AuthEnc::EAX) — двухпроходный AEAD на основе CTR+OMAC. Без патентов, без ограничений на длину nonce.
  • AES-CCM (Crypt::AuthEnc::CCM) — используется в WiFi (WPA2) и Bluetooth. Требует заранее знать длину открытого текста.

Криптографически безопасная случайность и UUID

  • Случайные байты / строки (Crypt::PRNG) — используйте для salt, ключей, nonce, токенов и любых других секретных случайных значений. Функциональные помощники random_bytes, random_bytes_hex, random_bytes_b64, random_bytes_b64u, random_string и random_string_from покрывают большинство случаев использования. ООП-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) — поточный шифр по умолчанию. То же ядро, что и ChaCha20-Poly1305, без встроенного MAC.
  • 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, и т.д.) — альтернатива SHA-2 с совершенно другой конструкцией (губка Keccak).
  • BLAKE2b / BLAKE2s (Crypt::Digest::BLAKE2b_256, и т.д.) — очень быстрые, особенно в программной реализации. BLAKE2b для 64-битных платформ, BLAKE2s для 32-битных.
  • SHAKE / TurboSHAKE / KangarooTwelve — функции с расширяемым выходом (XOF). Используйте, когда нужен выход переменной длины.

Контрольные суммы

Используйте Crypt::Checksum::CRC32 и Crypt::Checksum::Adler32 только для невраждебных проверок целостности, таких как обнаружение случайного повреждения. Они не являются криптографическими механизмами целостности или подлинности. Для криптографического использования предпочитайте Crypt::Digest, Crypt::Mac или режим AEAD из Crypt::AuthEnc.

Коды аутентификации сообщений

  • 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 бита против ~128 бит).
  • X25519 (Crypt::PK::X25519) — согласование ключей по эллиптическим кривым (Diffie-Hellman). Вариант по умолчанию для обмена ключами.
  • X448 (Crypt::PK::X448) — более высокий запас прочности, чем X25519.
  • ECDSA (Crypt::PK::ECC) — широко используется (TLS, Bitcoin). Для новых разработок предпочитайте Ed25519, если ECDSA не требуется для совместимости.
  • 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) — KDF «извлечение-затем-расширение». Используется для вывода ключей из общего секрета (например, после ECDH).
  • Argon2 ("argon2_pbkdf" in Crypt::KeyDerivation) — хеширование паролей, требовательное к памяти. Рекомендуемый выбор для хранения паролей.
  • 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. Самые важные примеры — функции *_decrypt_verify в модулях аутентифицированного шифрования Crypt::AuthEnc::*. Они возвращают 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 является Math::BigInt::LTM, бэкенд Math::BigInt, основанный на встроенной библиотеке LibTomMath. Он отделён от криптографических API, описанных выше, но поставляется в том же дистрибутиве и использует тот же движок больших целых чисел, на который опирается LibTomCrypt.

ЛИЦЕНЗИЯ

Эта программа является свободным программным обеспечением; вы можете распространять и/или изменять её на тех же условиях, что и сам Perl.

АВТОРСКИЕ ПРАВА

Copyright (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 только тогда, когда вам нужен собственный разбор или кодирование ASN.1 / DER. Большинство распространённых форматов ключей и сертификатов уже обрабатываются модулями PK.

  • Прочие вспомогательные функции

    Crypt::Misc (кодеки base64/base32/base58, помощники PEM, сравнение за постоянное время, генерация UUID, вспомогательные функции инкремента октетов и связанные утилиты)