
Perl-Kryptographie-Toolkit, das symmetrische Chiffren, AEAD-Modi, Hash-Funktionen, MACs, Public-Key-Kryptographie, Schlüsselableitung und sichere Zufallsgenerierung über die gebündelte LibTomCrypt-Bibliothek bereitstellt.
CryptX - Kryptografische Werkzeugsammlung
CryptX ist der Einstiegspunkt der Distribution. Im normalen Code lädt man eines der unten aufgeführten konkreten Module.
## Einmal-Hashing
use Crypt::Digest qw(digest_data_hex);
my $sha256 = digest_data_hex('SHA256', 'hello world');
## Klassische AES-CBC-Verschlüsselung mit Padding
use Crypt::Mode::CBC;
my $cbc = Crypt::Mode::CBC->new('AES');
my $iv = random_bytes(16); # 16-Byte AES-Blockgröße IV
my $cbc_ciphertext = $cbc->encrypt('hello world', $key, $iv);
## Authentifizierte Verschlüsselung (AEAD) mit AES
use Crypt::AuthEnc::GCM qw(gcm_encrypt_authenticate);
my $key = random_bytes(32); # 32-Byte AES-256-Schlüssel
my $nonce = random_bytes(12); # 12-Byte einmalige Nonce
my ($ciphertext, $tag) = gcm_encrypt_authenticate('AES', $key, $nonce, 'header', 'hello world');
## Nachrichtenauthentifizierung
use Crypt::Mac::HMAC qw(hmac_hex);
my $mac = hmac_hex('SHA256', $key, 'hello world');
## Sichere Zufallsdaten + UUID-Hilfsfunktionen
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();
## Klassische passwortbasierte Schlüsselableitung
use Crypt::KeyDerivation qw(pbkdf2);
my $dk = pbkdf2('password', $salt, 100_000, 'SHA256', 32);
## Reine Stromchiffre (Authentifizierung separat)
use Crypt::Stream::ChaCha;
my $stream = Crypt::Stream::ChaCha->new($key, $nonce);
my $stream_ciphertext = $stream->crypt('hello world');
## Moderne Signaturen
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');
## Schlüsselaustausch
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-Kryptografiemodule, die auf der gebündelten LibTomCrypt-Bibliothek basieren. Die Distribution enthält außerdem Math::BigInt::LTM, ein Backend für Math::BigInt, das auf der gebündelten LibTomMath-Bibliothek aufbaut, die intern von LibTomCrypt verwendet wird.
Dieses Modul dient hauptsächlich als zentrale Seite für Distribution/Dokumentation. Für die eigentliche Arbeit verwenden Sie eines der unten aufgeführten konkreten Module.
Bevorzugen Sie bei neuen Entwürfen authentifizierte Verschlüsselung (AEAD) gegenüber reinen Verschlüsselungsmodi:
random_bytes, random_bytes_hex, random_bytes_b64, random_bytes_b64u,
random_string und random_string_from decken die meisten Anwendungsfälle ab. Die OO-API
und die algorithmusspezifischen Wrapper (Crypt::PRNG::ChaCha20, Crypt::PRNG::Fortuna usw.)
dienen hauptsächlich deterministischen Strömen oder der Interoperabilität mit einem bestimmten PRNG.random_v4uuid verwenden
für undurchsichtige Zufallsidentifikatoren. random_v7uuid verwenden, wenn ungefähr zeitlich geordnete Identifikatoren
gewünscht werden, die nach Erstellungszeit auf Millisekundenebene sortieren. UUIDs sind Identifikatoren, kein Ersatz für
geheime Zufallsbytes.Stromchiffren verschlüsseln Daten Byte für Byte ohne Block-Padding. Für die meisten Anwendungen einen AEAD-Modus bevorzugen (siehe oben), der Verschlüsselung mit Authentifizierung bündelt. Reine Stromchiffren nur verwenden, wenn die Authentifizierung separat erfolgt.
Diese nur verwenden, wenn die Authentifizierung separat erfolgt oder nicht benötigt wird: