VMX::Common::urandom()

databind
vitalif 2010-06-05 22:55:26 +00:00 committed by Vitaliy Filippov
parent 0a6de46166
commit eb3925da20
1 changed files with 11 additions and 1 deletions

View File

@ -631,11 +631,21 @@ sub callif
return wantarray ? () : undef;
}
# чтение N байт из urandom или rand() в случае его отсутствия
# чтение N байт из Crypt::Random, urandom или rand() в случае его отсутствия
my $no_crypt_random;
sub urandom
{
my ($bs) = @_;
return undef unless $bs && $bs > 0;
if (!$no_crypt_random && !$INC{'Crypt/Random.pm'})
{
eval { require Crypt::Random; };
$no_crypt_random = 1 if $@;
}
if (!$no_crypt_random)
{
return Crypt::Random::makerandom_octet(Length => $bs, Strength => 1);
}
my ($fd, $data);
if (open $fd, "</dev/urandom")
{