
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: