Perl 种子数学::随机::来自/dev/uradom的ISAAC:如何读取/传递128位?

Perl 种子数学::随机::来自/dev/uradom的ISAAC:如何读取/传递128位?,perl,file,unix,random,binary,Perl,File,Unix,Random,Binary,在Perl中有许多方法可以创建安全的随机数。大多数方法都涉及一个或多个Perl模块。其中许多Perl模块需要更多的Perl模块作为依赖项 因为我想让事情变得非常轻巧,并减少所需的依赖性,所以我决定使用Math::Random::ISAAC,并从/dev/uradom中自己植入它 那么,在Perl中,在不使用其他模块的情况下,从/dev/uradom读取128位(我想这是一个很好的数量)数据,然后将其传递给ISAAC,推荐的方法是什么呢 我不知道正确的阅读和格式化方法是什么,这里有一份 我不是数组

在Perl中有许多方法可以创建安全的随机数。大多数方法都涉及一个或多个Perl模块。其中许多Perl模块需要更多的Perl模块作为依赖项

因为我想让事情变得非常轻巧,并减少所需的依赖性,所以我决定使用
Math::Random::ISAAC
,并从
/dev/uradom
中自己植入它

那么,在Perl中,在不使用其他模块的情况下,从
/dev/uradom
读取128位(我想这是一个很好的数量)数据,然后将其传递给
ISAAC
,推荐的方法是什么呢

我不知道正确的阅读和格式化方法是什么,这里有一份


我不是数组、标量、字节字符串等细节方面的专家;因此,我真的不知道如何将
uradom
数据适当地格式化为
@seed
。我确实认为128位是大量的随机性,但我不知道如何确保所有的熵都能使它成为ISAAC,并防止它在过程中被截断为64或32位。

从使用种子的ISAAC代码来看,它似乎需要32位的值。因此:

use autodie;
open(my $fh,'<','/dev/urandom');
my $buffer;
read($fh, $buffer, 16) == 16 or die "not enough read";
my @seed = unpack 'L4', $buffer;
my $isaac = Math::Random::ISAAC->new(@seed);
使用autodie;

打开(my$fh,“从使用seed的ISAAC代码来看,它似乎需要32位的值。因此:

use autodie;
open(my $fh,'<','/dev/urandom');
my $buffer;
read($fh, $buffer, 16) == 16 or die "not enough read";
my @seed = unpack 'L4', $buffer;
my $isaac = Math::Random::ISAAC->new(@seed);
使用autodie;
打开(我的$fh,'