AES-Verschlüsselung mit Perl

Das Programm verwendet die Module Crypt::CBC, Crypt::Rijndael und MIME::Base64, um eine AES-Verschlüsselung durchzuführen. Zunächst wird der Klartext, der verschlüsselt werden soll, und der geheime Schlüssel definiert. Der geheime Schlüssel ist ein 256-Bit-Schlüssel im Hexadezimalformat. Dann wird der Initialisierungsvektor (IV) definiert, der ein 128-Bit-IV im Binärformat ist.

Anschließend wird ein Crypt::CBC-Objekt erstellt, das den Rijndael-Algorithmus (AES) für die Verschlüsselung verwendet und dabei den geheimen Schlüssel und den IV berücksichtigt. Nach der Verschlüsselung des Klartexts mit diesem Code wird der verschlüsselte Text in Base64 kodiert, um ihn in eine druckbare Zeichenfolge umzuwandeln.

Das Programm gibt dann den verschlüsselten Text aus und führt die Entschlüsselung durch, indem es den verschlüsselten Text aus Base64 decodiert und den Verschlüsselungscode verwendet. Schließlich wird der entschlüsselte Klartext ausgegeben.

#!/usr/bin/perl

use Crypt::CBC;
use Crypt::Rijndael;
use MIME::Base64;

# Der Text, den Sie verschlüsseln möchten
my $klartext = "Dies ist eine geheime Nachricht.";

# Der geheime Schlüssel genau 32 Bytes = 256 Bit
my $schluessel = pack("H*", "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF");

# Initialisierungsvektor (IV) im Binärformat (genau 16 Bytes = 128 Bit)
my $iv = pack("H*", "0123456789ABCDEF0123456789ABCDEF");

# Erstellen eines Verschlüsselungscodes mit der Option "pbkdf2"
my $cipher = Crypt::CBC->new(
    -cipher      => 'Crypt::Rijndael',
    -key         => $schluessel,
    -iv          => $iv,
    -header      => 'none',
    -padding     => 'standard',
    -keysize     => 32,    # 256-Bit-Schlüssel
    -pbkdf       => 'pbkdf2',  # Verwendung von PBKDF2
);

# Verschlüsseln
my $geheimtext = $cipher->encrypt($klartext);

# Base64-Kodierung, um den verschlüsselten Text in eine druckbare Zeichenfolge umzuwandeln
$geheimtext = encode_base64($geheimtext);

print "Verschlüsselter Text: $geheimtext\n";

# Entschlüsseln
my $entschluesselter_text = $cipher->decrypt(decode_base64($geheimtext));

print "Entschlüsselter Text: $entschluesselter_text\n";

Perl-Module installieren

Falls es beim Ausführen des Programms zu einer Fehlermeldung kommt sind die notwendigen Perl-Module nicht installiert. Nachholen mit:

sudo su -
apt update && apt install cpanminus -y
cpanm Crypt::CBC
cpanm Crypt::Rijndael

Siehe auch

metacpan.org/pod/base64 Base64-Daten kodieren und dekodieren
metacpan.org/pod/Crypt::CBC Verschlüsseln von Daten mit Cipher Block Chaining Mode
metacpan.org/pod/Crypt::Rijndael Crypt::CBC-konformes Rijndael-Verschlüsselungsmodul