#perl #pack
#perl #упаковать
Вопрос:
Возможно ли упаковать 128- или 256-битные числа (ключи AES / ivs, сгенерированные с помощью Crypt::Random::makerandom), используя встроенный пакет perl? Если да, то во что должен быть вставлен мой шаблон X
pack('X', ($256_bit_number));
быть?
Спасибо.
Ответ №1:
Perl не может содержать такие большие числа, поэтому он не может их упаковать.
Итак, давайте посмотрим, что makerandom
на самом деле возвращает.
$ perl -MData::Dumper -MCrypt::Random=makerandom
-e'print(Dumper(makerandom(Size => 256, Strength => 1)));'
$VAR1 = bless( do{(my $o = 148076988)}, 'Math::Pari' );
Ах, объект Math::Pari. Глядя на документы, кажется, что не существует простого способа их упаковать. Но, похоже, нам этого не нужно. Crypt::Random обеспечивает makerandom_octet
возврат «упакованного» числа.
$ perl -MCrypt::Random=makerandom_octet
-e'print(unpack("H*", makerandom_octet(Size => 256, Strength => 1)));'
1432698ef28c63d9cb0bba474c1644b4a6f9736616bd070102a612785332e94bb4