4

是否可以使用 perl 内置包打包 128 位或 256 位数字(使用 Crypt::Random::makerandom 生成的 AES 密钥/ivs)?如果是,我的模板 X 应该在什么

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

是?

谢谢你。

4

1 回答 1

11

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
于 2011-04-13T00:57:43.227 回答