Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ARC4RANDOM(3)		 BSD Library Functions Manual		 ARC4RANDOM(3)

NAME
     arc4random, arc4random_buf, arc4random_uniform, arc4random_stir,
     arc4random_addrandom -- arc4 random number	generator

LIBRARY
     Standard C	Library	(libc, -lc)

SYNOPSIS
     #include <stdlib.h>

     u_int32_t
     arc4random(void);

     void
     arc4random_buf(void *buf, size_t nbytes);

     u_int32_t
     arc4random_uniform(u_int32_t upper_bound);

     void
     arc4random_stir(void);

     void
     arc4random_addrandom(unsigned char	*dat, int datlen);

DESCRIPTION
     The 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 arc4random() function returns pseudo-random	num-
     bers in the range of 0 to (2**32)-1, and therefore	has twice the range of
     rand(3) and random(3).

     arc4random_buf() function fills the region	buf of length nbytes with
     ARC4-derived random data.

     arc4random_uniform() will return a	uniformly distributed random number
     less than upper_bound.  arc4random_uniform() is recommended over con-
     structions	like "arc4random() % upper_bound" as it	avoids "modulo bias"
     when the upper bound is not a power of two.

     The arc4random_stir() function reads data from /dev/urandom and uses it
     to	permute	the S-Boxes via	arc4random_addrandom().

     There is no need to call arc4random_stir()	before using arc4random()
     functions family, since they automatically	initialize themselves.

EXAMPLES
     The following produces a drop-in replacement for the traditional rand()
     and random() functions using 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 anony-
     mously 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.

BSD				April 15, 1997				   BSD

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | EXAMPLES | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=arc4random&sektion=3&manpath=FreeBSD+8.2-RELEASE>

home | help