
Boîte à outils cryptographique Perl fournissant des chiffrements symétriques, des modes AEAD, des fonctions de hachage, des MAC, la cryptographie à clé publique, la dérivation de clés et la génération aléatoire sécurisée via la bibliothèque LibTomCrypt incluse.
CryptX - Boîte à outils cryptographique
CryptX est le point d'entrée de la distribution. Dans le code normal, chargez l'un des modules concrets listés ci-dessous.
## 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);
Modules cryptographiques Perl basés sur la bibliothèque LibTomCrypt incluse. La distribution inclut également Math::BigInt::LTM, un backend Math::BigInt basé sur la bibliothèque LibTomMath incluse, utilisée en interne par LibTomCrypt.
Ce module sert principalement de page principale de la distribution/de la documentation. Pour un usage réel, utilisez l'un des modules concrets listés ci-dessous.
Pour les nouvelles conceptions, privilégiez le chiffrement authentifié (AEAD) aux modes de chiffrement seuls :
random_bytes, random_bytes_hex, random_bytes_b64, random_bytes_b64u,
random_string et random_string_from couvrent la plupart des cas d'utilisation. L'API OO
et les enveloppes spécifiques à un algorithme (Crypt::PRNG::ChaCha20, Crypt::PRNG::Fortuna, etc.)
servent principalement aux flux déterministes ou à l'interopérabilité avec un PRNG spécifique.random_v4uuid
pour des identifiants aléatoires opaques. Utilisez random_v7uuid lorsque vous souhaitez des identifiants approximativement ordonnés dans le temps,
triés par heure de création à une granularité de milliseconde. Les UUID sont des identifiants, pas des remplacements pour
des octets aléatoires secrets.Les chiffrements de flux chiffrent les données octet par octet, sans bourrage de bloc. Pour la plupart des applications, préférez un mode AEAD (voir ci-dessus) qui regroupe chiffrement et authentification. N'utilisez des chiffrements de flux seuls que lorsque vous gérez l'authentification séparément.
N'utilisez ces modes que lorsque l'authentification est gérée séparément ou n'est pas nécessaire :