ARC4RANDOM
Section: C Library Functions (3)
Index
Return to Main Contents
BSD mandoc
NAME
arc4random
arc4random_buf
arc4random_uniform
arc4random_stir
arc4random_addrandom
- arc4 random number generator
LIBRARY
Lb libbsd
SYNOPSIS
In bsd/stdlib.h
Ft u_int32_t
Fn arc4random void
Ft void
Fn arc4random_buf void *buf size_t nbytes
Ft u_int32_t
Fn arc4random_uniform u_int32_t upper_bound
Ft void
Fn arc4random_stir void
Ft void
Fn arc4random_addrandom unsigned char *dat int datlen
DESCRIPTION
The
Fn arc4random
function uses the key stream generator employed by the
arc4 cipher, which uses 8*8 8 bit S-Boxes.
The S-Boxes
can be in about
(2**1700)
states.
The
Fn arc4random
function returns pseudo-random numbers in the range of 0 to
(2**32)-1,
and therefore has twice the range of
rand(3)
and
random(3).
Fn arc4random_buf
function fills the region
Fa buf
of length
Fa nbytes
with ARC4-derived random data.
Fn arc4random_uniform
will return a uniformly distributed random number less than
Fa upper_bound .
Fn arc4random_uniform
is recommended over constructions like
``arc4random() % upper_bound
''
as it avoids "modulo bias" when the upper bound is not a power of two.
The
Fn arc4random_stir
function reads data from
/dev/urandom
and uses it to permute the S-Boxes via
Fn arc4random_addrandom .
There is no need to call
Fn arc4random_stir
before using
Fn arc4random
functions family, since
they automatically initialize themselves.
EXAMPLES
The following produces a drop-in replacement for the traditional
Fn rand
and
Fn random
functions using
Fn arc4random :
"#define foo4random() (arc4random() % ((unsigned)RAND_MAX + 1))"
SEE ALSO
rand(3),
random(3),
srandomdev(3)
HISTORY
RC4
has been designed by RSA Data Security, Inc.
It was posted anonymously
to the USENET and was confirmed to be equivalent by several sources who
had access to the original cipher.
Since
RC4
used to be a trade secret, the cipher is now referred to as
ARC4
Index
- NAME
-
- LIBRARY
-
- SYNOPSIS
-
- DESCRIPTION
-
- EXAMPLES
-
- SEE ALSO
-
- HISTORY
-