Как мне упаковать 128- или 256-битные числа - PullRequest
4 голосов
/ 13 апреля 2011

Можно ли упаковать 128- или 256-битные числа (ключи AES / ivs, созданные с помощью Crypt :: Random :: makerandom), используя встроенный пакет perl? Если да, то какой должен быть мой шаблон X в

pack('X', ($256_bit_number)); 

быть?

Спасибо.

1 Ответ

11 голосов
/ 13 апреля 2011

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...