Invalid length key (Crypt::Blowfish)
Siechfred
- perl
Guten Abend,
wieder einmal versuche ich mich durch Perl zu wühlen und bin dabei auf folgendes Problem gestoßen:
Das Script sieht wie folgt aus:
#!/usr/bin/perl -w
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use Crypt::Blowfish;
$query = new CGI;
$stringtocrypt = $query->param('pwd');
@chars = (0..9, 'A'..'Z', 'a'..'z');
$key_str = "";
$i = 1;
for($i < 16) {
$n = int(rand(62)+1);
$key_str = $key_str.$chars[$n];
$i++;
}
$key = pack("b8", "01234567");
$cipher = new Crypt::Blowfish $key;
$ciphertext = $cipher->encrypt($stringtocrypt);
Wenn ich das Script ausführe, kommt die Fehlermeldung, dass der Key nicht die richtige Länge habe. Wo liegt das Problem?
mfg Torsten
Guten Abend,
kleiner Nachtrag.
$key = pack("b8", "01234567");
Ich vermute, dass hier das Problem liegt, denn $key muss 8 bit haben. Ich haben es auch schon mit dem Beispiel aus der Dokumentation zum Modul versucht:
$key = pack("H16", "0123456789ABCDEF");
Aber die Fehlermeldung blieb die gleiche.
mfg Torsten
Guten Morgen,
vielleicht sollte ich dir Frage etwas konkretisieren:
$key = pack("H16", "0123456789ABCDEF");
1. Weiß jemand, welcher Datentyp $key sein muss?
2. Woran erkenne ich, dass ein String eine Länge von 8 bit hat?
mfg Torsten
Moin Moin !
Guten Morgen,
vielleicht sollte ich dir Frage etwas konkretisieren:
$key = pack("H16", "0123456789ABCDEF");
- Weiß jemand, welcher Datentyp $key sein muss?
- Woran erkenne ich, dass ein String eine Länge von 8 bit hat?
mfg Torsten
Aus der Doku:
my $key = pack("H16", "0123456789ABCDEF"); # min. 8 bytes
my $cipher = new Crypt::Blowfish $key;
my $ciphertext = $cipher->encrypt("plaintex"); # SEE NOTES
print unpack("H16", $ciphertext), "\n";
8 Bytes in Hex-Darstellung (H-Argument) sind 16 Hex-Ziffern, sprich: ein 16 Zeichen langer String.
$key enthält mind. 8 Bytes binäre Daten, siehe pack in perlfunc.
Alexander