2011-04-13 83 views
4

是否可以使用perl內置包打包128位或256位數字(使用Crypt :: Random :: makerandom生成的AES密鑰/ iv)?如果是的話,我的模板X應該在如何打包128位或256位數

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

是?

謝謝。

回答

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