Thread [Crypt-CTR] AES mit CTR oder doch nicht?
(18 answers)
Opened by thecoder2012 at 2013-02-04 06:57
Ich selbst möchte Daten mit AES CTR mit Perl decrypten. Ein funktionierender Quellcode liegt in PHP vor und bisher sind alle Versuche in Perl in der Richtung gescheitert. Es wurde auf Windows mit Perl 5.10 (32-Bit) und Debian Linux 6 mit Perl 5.14.2 probiert.
Situation ein Server sendet in PHP generiert einen Datenstrom an einen anderen Server wo es empfangen werden soll. Mag wenn möglich wenigstens für den Decrypt Perl (mit SpeedyCGI/Lighttpd) einsetzen um am Ende PHP vom kontrollierten Server löschen/deaktivieren zu können. Auf den Server wo es generiert wird, kann ich leider keinen Einfluss nehmen. Testdaten AES CTR (256): Key: Ready to Have Some Fun Encrypt: DzQPUdLS0tKCWf9U6V/UDB3aQEUWCQ== Decrypt: perl prototype 1. Modul Crypt-CTR Code (perl): (dl
)
1 2 3 4 5 6 #!/usr/bin/env perl use Crypt::Ctr; my $aeskey = 'Ready to Have Some Fun'; my $input = 'DzQPUdLS0tKCWf9U6V/UDB3aQEUWCQ=='; my $cipher = new Crypt::Ctr $aeskey, 'Crypt::Rijndael'; print $cipher->decrypt($input) . "\n"; Erscheint beim Versuch folgende Fehlermeldung: Error:wrong key length: key must be 128, 192 or 256 bits long at C:/Perl/site/lib/Crypt/CFB.pm line 135. Grundsätzlich gibt es bei Rijndael scheinbar das Problem mit dem Key und dessen recht feste Länge. 2. Modul Crypt::Nettle::Cipher Code (perl): (dl
)
1 2 3 4 5 6 7 #!/usr/bin/env perl use Crypt::Nettle::Cipher; my $aeskey = 'Ready to Have Some Fun'; my $input = 'DzQPUdLS0tKCWf9U6V/UDB3aQEUWCQ=='; my $cipher = Crypt::Nettle::Cipher->new('decrypt', 'aes256', $aeskey, 'ctr'); $ciphertext = $cipher->process($input); print $ciphertext . "\n"; Scheint ein ähnliches Problem wie Modul 1 zu haben. perl: aes-set-encrypt-key.c:57: nettle_aes_set_encrypt_key: Assertion `keysize >= 16' failed. 3. CryptoKäse - Versuch AES/AES-CTR in pure Perl umzusetzen Siehe Anhang aes.pl bzgl. Modul 3 Fehler "Out of memory!" aber konnte den genauen Grund bisher nicht finden. Ohne ein Aufruf sind mir noch die beiden Fehlermeldungen Illegal modulus zero und Integer overflow in hexadecimal number begegnet, wo ich nicht wusste, wie man es in Perl scheinbar schreiben muss. Hab den jeweiligen Fehler im Code als Kommentar hinterlegt. UPDATE 1: Siehe msg #165456 Das PHP Skript stammt von http://www.movable-type.co.uk/scripts/aes-php.html (aes.class.php und aesctr.class.php) mit folgendem funktionierenden Aufruf: Code: (dl
)
1 <?php Das ganze existiert funktionierend auch noch in Python unter http://wiki.birth-online.de/snippets/python/aes-ri... , JavaScript unter http://www.movable-type.co.uk/scripts/aes.html bzw. http://sourceforge.net/projects/pidcrypt/ und das PDF Dokument unter http://csrc.nist.gov/publications/nistpubs/800-38a... EDIT - LÖSUNG: Crypt::AES::CTR Anhänge Last edited: 2013-10-08 20:51:55 +0200 (CEST) |