Data::Entropy::RawSource::Local - read randomness from local device
my $rawsrc = Data::Entropy::RawSource::Local->new;
# and the rest of the I/O handle interface
This class provides a constructor to open an I/O handle connected to a local
source of random octets. This may be a strong entropy source, depending on the
OS, but not every OS has such a facility at all.
There are no actual objects blessed into this class. Only the constructor
belongs to this class; it returns "IO::File" objects. For use as a
general entropy source, it is recommended to wrap the handle using
"Data::Entropy::Source", which provides methods to extract entropy
in more convenient forms than mere octets.
On systems with a blocking /dev/random
, such as Linux, the bits generated
can be totally unbiased and uncorrelated. Such an entropy stream is suitable
for all uses, including security applications. However, the rate of entropy
generation is limited, so applications requiring a large amount of
apparently-random data might prefer to fake it cryptographically (see
On systems where /dev/random
does not block, the bits generated are
necessarily correlated to some extent, but it should be cryptographically
difficult to detect the correlation. Such an entropy source is not suitable
for all applications. Some other systems lack /dev/random
satisfactory entropy cannot be generated locally, consider downloading it from
a server (see Data::Entropy::RawSource::RandomOrg and
- Opens a file handle referring to the randomness device, or
"die"s on error. The device opened is /dev/random by
default, but this may be overridden by giving a FILENAME argument.
The default device name may in the future be different on different OSes, if
their equivalent devices are in different places.
There are no actual objects blessed into this class. The constuctor returns
"IO::File" objects. See IO::File for the interface. It is
recommended to use unbuffered reads (the "sysread" method) rather
than buffered reads (the "getc" method et al), to avoid wasting
entropy that could be used by another process.
Data::Entropy::RawSource::RandomnumbersInfo, Data::Entropy::Source, IO::File
Andrew Main (Zefram) <email@example.com>
Copyright (C) 2006, 2007, 2009, 2011 Andrew Main (Zefram)
This module is free software; you can redistribute it and/or modify it under the
same terms as Perl itself.