table of contents
RANDOM(9) | Kernel Developer's Manual | RANDOM(9) |
NAME¶
arc4rand, arc4random, random, read_random, srandom — supply pseudo-random numbersSYNOPSIS¶
#include <sys/libkern.h> voidsrandom(u_long seed); u_long
random(void); void
arc4rand(void *ptr, u_int length, int reseed); u_int32_t
arc4random(void);
#include <sys/random.h> int
read_random(void *buffer, int count);
DESCRIPTION¶
The random() function will by default produce a sequence of numbers that can be duplicated by calling srandom() with ‘1
’ as the seed. The
srandom() function may be called with any arbitrary
seed value to get slightly more unpredictable numbers.
It is important to remember that the random() function is
entirely predictable, and is therefore not of use where knowledge of the
sequence of numbers may be of benefit to an attacker.
The arc4rand() function will return very good quality random
numbers, slightly better suited for security-related purposes. The random
numbers from arc4rand() are seeded from the entropy device
if it is available. Automatic reseeds happen after a certain timeinterval and
after a certain number of bytes have been delivered. A forced reseed can be
forced by passing a non-zero value in the reseed
argument.
The read_random() function is used to return entropy directly
from the entropy device if it has been loaded. If the entropy device is not
loaded, then the buffer is filled with output generated
by random(). The buffer is filled with
no more than count bytes. It is advised that
read_random() is not used; instead use
arc4rand()
All the bits generated by random(),
arc4rand() and read_random() are usable.
For example, ‘random()&01
’ will
produce a random binary value.
The arc4random() is a convenience function which calls
arc4rand() to return a 32 bit pseudo-random integer.
RETURN VALUES¶
The random() function uses a non-linear additive feedback random number generator employing a default table of size 31 long integers to return successive pseudo-random numbers in the range from 0 to (2**31)−1. The period of this random number generator is very large, approximately 16*((2**31)−1). The arc4rand() function uses the RC4 algorithm to generate successive pseudo-random bytes. The arc4random() function uses arc4rand() to generate pseudo-random numbers in the range from 0 to (2**32)−1. The read_random() function returns the number of bytes placed in buffer.AUTHORS¶
Dan Moschuk wrote arc4random().Mark R V Murray wrote read_random().
September 25, 2000 | Debian |