如何打包 128 位或 256 位数字

发布于 2024-11-01 06:09:29 字数 180 浏览 1 评论 0原文

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

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

谢谢。

Is it possible to pack 128- or 256-bit numbers (AES keys/ivs generated with Crypt::Random::makerandom) using the perl built-in pack? If yes, what should my template X in

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

be?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千笙结 2024-11-08 06:09:29

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

Perl can't hold numbers that large, so it can't possibly pack them.

So let's look at what makerandom actually returns.

$ perl -MData::Dumper -MCrypt::Random=makerandom \
   -e'print(Dumper(makerandom(Size => 256, Strength => 1)));'
$VAR1 = bless( do{\(my $o = 148076988)}, 'Math::Pari' );

Ah, a Math::Pari object. Looking at the docs, there doesn't appear to be a straightforward means of pack those. But it looks like we don't have to. Crypt::Random provides makerandom_octet that returns the "packed" number.

$ perl -MCrypt::Random=makerandom_octet \
   -e'print(unpack("H*", makerandom_octet(Size => 256, Strength => 1)));'
1432698ef28c63d9cb0bba474c1644b4a6f9736616bd070102a612785332e94bb4
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文