Aurora
Adminer
Auto Root
WP Admin
cPanel Reset
Anti Backdoor
Root
lib64
perl5
vendor_perl
Crypt
PRNG
Upload
New Folder
New File
Name
Size
Permissions
Actions
..
-
-
-
Upload File
Select File
New Folder
Folder Name
New File
File Name
Add WordPress Admin
Database Host
Database Name
Database User
Database Password
Admin Username
Admin Password
cPanel Password Reset
Email Address
Edit: Fortuna.pm
package Crypt::PRNG::Fortuna; use strict; use warnings; our $VERSION = '0.089'; use base qw(Crypt::PRNG Exporter); our %EXPORT_TAGS = ( all => [qw(random_bytes random_bytes_hex random_bytes_b64 random_bytes_b64u random_string random_string_from rand irand)] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); our @EXPORT = qw(); use CryptX; sub new { my ($class, @args) = @_; my $obj = Crypt::PRNG->new('Fortuna', @args); return bless $obj, $class; } { ### stolen from Bytes::Random::Secure my $RNG_object = undef; my $fetch_RNG = sub { # Lazily, instantiate the RNG object, but only once. $RNG_object = Crypt::PRNG::Fortuna->new unless defined $RNG_object && ref($RNG_object) ne 'SCALAR'; return $RNG_object; }; sub rand { return $fetch_RNG->()->double(@_) } sub irand { return $fetch_RNG->()->int32(@_) } sub random_bytes { return $fetch_RNG->()->bytes(@_) } sub random_bytes_hex { return $fetch_RNG->()->bytes_hex(@_) } sub random_bytes_b64 { return $fetch_RNG->()->bytes_b64(@_) } sub random_bytes_b64u { return $fetch_RNG->()->bytes_b64u(@_) } sub random_string_from { return $fetch_RNG->()->string_from(@_) } sub random_string { return $fetch_RNG->()->string(@_) } } 1; =pod =head1 NAME Crypt::PRNG::Fortuna - Cryptographically secure PRNG based on Fortuna algorithm =head1 SYNOPSIS ### Functional interface: use Crypt::PRNG::Fortuna qw(random_bytes random_bytes_hex random_bytes_b64 random_bytes_b64u random_string random_string_from rand irand); my $octets = random_bytes(45); my $hex_string = random_bytes_hex(45); my $base64_string = random_bytes_b64(45); my $base64url_string = random_bytes_b64u(45); my $alphanumeric_string = random_string(30); my $string = random_string_from('ACGT', 64); my $floating_point_number_0_to_1 = rand; my $floating_point_number_0_to_88 = rand(88); my $unsigned_32bit_int = irand; ### OO interface: use Crypt::PRNG::Fortuna; my $prng = Crypt::PRNG::Fortuna->new; my $seeded_prng = Crypt::PRNG::Fortuna->new("some data used for seeding PRNG"); my $octets = $prng->bytes(45); my $hex_string = $prng->bytes_hex(45); my $base64_string = $prng->bytes_b64(45); my $base64url_string = $prng->bytes_b64u(45); my $alphanumeric_string = $prng->string(30); my $string = $prng->string_from('ACGT', 64); my $floating_point_number_0_to_1 = $prng->double; my $floating_point_number_0_to_88 = $prng->double(88); my $unsigned_32bit_int = $prng->int32; =head1 DESCRIPTION Provides an interface to the Fortuna-based pseudo-random number generator. This is a thin wrapper around L<Crypt::PRNG> with the algorithm fixed to Fortuna. All functions and methods accept the same arguments and return the same values as the corresponding L<Crypt::PRNG> entries. =head1 EXPORT Nothing is exported by default. You can export selected functions: use Crypt::PRNG::Fortuna qw(random_bytes random_string); Or all of them at once: use Crypt::PRNG::Fortuna ':all'; =head1 FUNCTIONS All functions below behave exactly like the corresponding L<Crypt::PRNG> functions, but use a hidden C<Crypt::PRNG::Fortuna> object internally. =head2 random_bytes See L<Crypt::PRNG/random_bytes>. =head2 random_bytes_hex See L<Crypt::PRNG/random_bytes_hex>. =head2 random_bytes_b64 See L<Crypt::PRNG/random_bytes_b64>. =head2 random_bytes_b64u See L<Crypt::PRNG/random_bytes_b64u>. =head2 random_string See L<Crypt::PRNG/random_string>. =head2 random_string_from See L<Crypt::PRNG/random_string_from>. =head2 rand See L<Crypt::PRNG/rand>. =head2 irand See L<Crypt::PRNG/irand>. =head1 METHODS Unless noted otherwise, assume C<$prng> is an existing C<Crypt::PRNG::Fortuna> object created via C<new>. =head2 new my $prng = Crypt::PRNG::Fortuna->new; my $seeded_prng = Crypt::PRNG::Fortuna->new($seed); Creates a PRNG object using the Fortuna algorithm. If C<$seed> is omitted, the object is automatically seeded by the underlying L<Crypt::PRNG> logic. =head2 bytes See L<Crypt::PRNG/bytes>. =head2 bytes_hex See L<Crypt::PRNG/bytes_hex>. =head2 bytes_b64 See L<Crypt::PRNG/bytes_b64>. =head2 bytes_b64u See L<Crypt::PRNG/bytes_b64u>. =head2 string See L<Crypt::PRNG/string>. =head2 string_from See L<Crypt::PRNG/string_from>. =head2 double See L<Crypt::PRNG/double>. =head2 int32 See L<Crypt::PRNG/int32>. =head1 SEE ALSO =over =item * L<Crypt::PRNG> =item * L<https://en.wikipedia.org/wiki/Fortuna_%28PRNG%29> =back =cut