
Ferramenta criptográfica Perl que fornece cifras simétricas, modos AEAD, funções hash, MACs, criptografia de chave pública, derivação de chave e geração aleatória segura através da biblioteca LibTomCrypt inclusa.
CryptX - Kit de ferramentas criptográficas
CryptX é o ponto de entrada da distribuição. No código normal, carregue um dos módulos concretos listados abaixo.
## hashing único
use Crypt::Digest qw(digest_data_hex);
my $sha256 = digest_data_hex('SHA256', 'hello world');
## criptografia clássica AES-CBC com preenchimento
use Crypt::Mode::CBC;
my $cbc = Crypt::Mode::CBC->new('AES');
my $iv = random_bytes(16); # IV de 16 bytes (tamanho do bloco AES)
my $cbc_ciphertext = $cbc->encrypt('hello world', $key, $iv);
## criptografia autenticada (AEAD) com AES
use Crypt::AuthEnc::GCM qw(gcm_encrypt_authenticate);
my $key = random_bytes(32); # chave AES-256 de 32 bytes
my $nonce = random_bytes(12); # nonce único de 12 bytes
my ($ciphertext, $tag) = gcm_encrypt_authenticate('AES', $key, $nonce, 'header', 'hello world');
## autenticação de mensagens
use Crypt::Mac::HMAC qw(hmac_hex);
my $mac = hmac_hex('SHA256', $key, 'hello world');
## dados aleatórios seguros + auxiliares UUID
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();
## derivação de chave clássica baseada em senha
use Crypt::KeyDerivation qw(pbkdf2);
my $dk = pbkdf2('password', $salt, 100_000, 'SHA256', 32);
## cifra de fluxo simples (autentique separadamente)
use Crypt::Stream::ChaCha;
my $stream = Crypt::Stream::ChaCha->new($key, $nonce);
my $stream_ciphertext = $stream->crypt('hello world');
## assinaturas modernas
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');
## acordo de chaves
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);
Módulos criptográficos Perl construídos sobre a biblioteca LibTomCrypt empacotada. A distribuição também inclui Math::BigInt::LTM, um backend para Math::BigInt construído sobre a biblioteca LibTomMath empacotada usada internamente pelo LibTomCrypt.
Este módulo serve principalmente como página de topo da distribuição/documentação. Para trabalho real, use um dos módulos concretos listados abaixo.
Para novos projetos, prefira criptografia autenticada (AEAD) a modos de cifra simples:
random_bytes, random_bytes_hex, random_bytes_b64, random_bytes_b64u,
random_string e random_string_from cobrem a maioria dos casos de uso. A API OO
e os wrappers específicos de algoritmo (Crypt::PRNG::ChaCha20, Crypt::PRNG::Fortuna, etc.)
são principalmente para fluxos determinísticos ou interoperabilidade com um PRNG específico.random_v4uuid
para identificadores aleatórios opacos. Use random_v7uuid quando quiser identificadores aproximadamente ordenados por tempo
que se classificam por tempo de criação com granularidade de milissegundos. UUIDs são identificadores, não substitutos para
bytes aleatórios secretos.Cifras de fluxo criptografam dados byte a byte sem preenchimento de bloco. Para a maioria das aplicações, prefira um modo AEAD (veja acima) que combina criptografia com autenticação. Use cifras de fluxo simples apenas quando você lidar com autenticação separadamente.
Use estes apenas quando a autenticação for tratada separadamente ou não for necessária:
Os módulos individuais Crypt::Cipher::AES, Crypt::Cipher::Twofish, etc. implementam criptografia bruta de bloco único e raramente são usados diretamente. Na maioria dos casos, você deve usá-los através de um modo AEAD (Crypt::AuthEnc::GCM, Crypt::AuthEnc::CCM) ou um modo de cifra de bloco (Crypt::Mode::CBC, Crypt::Mode::CTR). Ao escolher uma cifra, AES é o padrão; é acelerado por hardware na maioria das CPUs modernas.
Use Crypt::Checksum::CRC32 e Crypt::Checksum::Adler32 apenas para verificações de integridade não adversariais, como detecção de corrupção acidental. Eles não são mecanismos de integridade ou autenticação criptográfica. Para uso criptográfico, prefira Crypt::Digest, Crypt::Mac ou um modo AEAD de Crypt::AuthEnc.
A maioria dos módulos CryptX relata erros chamando croak (de Carp).
Parâmetros inválidos, algoritmos não suportados, tamanhos de chave errados, entrada
malformada e falhas internas da biblioteca geralmente chamam croak com uma mensagem
descritiva. Capture exceções com eval ou Try::Tiny.
Alguns helpers de validação usam um valor de retorno em vez de croak. Os
exemplos mais importantes são as funções *_decrypt_verify nos
módulos de criptografia autenticada Crypt::AuthEnc::*.
Estas retornam undef quando a autenticação falha, indicando que o texto cifrado foi adulterado
ou a chave/nonce errado foi usado. Alguns helpers de análise/decodificação em outros módulos
também retornam undef ou falso para entrada malformada, então verifique o POD
do módulo concreto quando precisar de semântica exata de falha.
Módulos de família de topo
Crypt::Cipher, Crypt::Mode, Crypt::AuthEnc, Crypt::Digest, Crypt::Mac, Crypt::Checksum, Crypt::PRNG, Crypt::PK, Crypt::KeyDerivation, Crypt::Misc, Crypt::ASN1
Cifras simétricas
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, , , , , , , , , , , , ,
Estas funções de baixo nível expõem detalhes da construção do LibTomCrypt incluído. Destinam-se a resolução de problemas e relatórios de bugs, não para uso regular.
my $str = CryptX::ltc_build_settings();
Retorna uma string de múltiplas linhas descrevendo cada opção de tempo de compilação que foi ativada quando a biblioteca LibTomCrypt incluída foi construída (cifras, hashes, MACs, algoritmos PK, flags do compilador, etc.).
my $name = CryptX::ltc_mp_name();
# e.g. "LTM" (LibTomMath)
Retorna o nome do provedor matemático back-end em uso.
my $bits = CryptX::ltc_mp_bits_per_digit();
# e.g. 60
Retorna o número de bits por dígito usado pelo provedor matemático.
Parte do CryptX é o Math::BigInt::LTM, um backend Math::BigInt baseado na biblioteca LibTomMath incluída. Ele é separado das APIs criptográficas acima, mas é distribuído no mesmo pacote e usa o mesmo motor de inteiros grandes do qual LibTomCrypt depende.
Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os mesmos termos que o próprio Perl.
Copyright (c) 2013-2026 DCIT, a.s. https://www.dcit.cz / Karel Miko
Modos de cifra de bloco
Crypt::Mode::CBC, Crypt::Mode::CFB, Crypt::Mode::CTR, Crypt::Mode::ECB, Crypt::Mode::OFB
Cifras de fluxo
Crypt::Stream::RC4, Crypt::Stream::ChaCha, Crypt::Stream::XChaCha, Crypt::Stream::Salsa20, Crypt::Stream::XSalsa20, Crypt::Stream::Sober128, Crypt::Stream::Sosemanuk, Crypt::Stream::Rabbit
Modos de criptografia autenticada
Crypt::AuthEnc::CCM, Crypt::AuthEnc::EAX, Crypt::AuthEnc::GCM, Crypt::AuthEnc::GCMSIV, Crypt::AuthEnc::OCB, Crypt::AuthEnc::ChaCha20Poly1305, Crypt::AuthEnc::XChaCha20Poly1305, Crypt::AuthEnc::SIV
Funções hashCrypt::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
Somas de verificação
Códigos de autenticação de mensagem
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
Criptografia de chave pública
Crypt::PK::RSA, Crypt::PK::DSA, Crypt::PK::ECC, Crypt::PK::DH, Crypt::PK::Ed25519, Crypt::PK::X25519, Crypt::PK::Ed448, Crypt::PK::X448
Geradores de números aleatórios criptograficamente seguros
Crypt::PRNG::Fortuna, Crypt::PRNG::Yarrow, Crypt::PRNG::RC4, Crypt::PRNG::Sober128, Crypt::PRNG::ChaCha20
Funções de derivação de chave
Analisador ASN.1
Use Crypt::ASN1 apenas quando precisar de análise ou codificação ASN.1 / DER personalizada.
A maioria dos formatos comuns de chave e certificado já são tratados pelos módulos PK.
Diversos auxiliares
Crypt::Misc (codecs base64/base32/base58, auxiliares PEM, comparação em tempo constante, geração de UUID, auxiliares de incremento de octeto e funções utilitárias relacionadas)