Skip to content
Useful for generating strong keys or random data. Better than default PHP random functions. Lots of different sources of entropy
PHP
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.gitattributes
.gitignore
LICENSE
README
example.php
randomBytes.php

README

Secure PHP random bytes
by @shoghicp

Useful for generating strong keys or random data. Better than default PHP random functions. Lots of different sources of entropy


Basic Usage: string randomBytes( [ int $length = 16 [, bool $secure = true [, bool $raw = true [, mixed $startEntropy = "" [, &$rounds [, &$drop ]]]]]])

	$length = 16;
	$bytes = randomBytes($length, true, false); //This will return 32 secure hexadecimal characters
	$bytes = randomBytes($length, false, true); //This will return 16 binary characters


	
Randomness tests using ENT (http://www.fourmilab.ch/random/)
	Machine: Windows 7 SP1 Intel i5 2.4 GHz x64 PHP 5.4.3, So no /dev/urandom
	
	USING SECURE MODE
	Generator code: randomBytes(524288, true, true, "", $rounds, $drop);
	Output:
		Entropy = 7.999653 bits per byte.

		Optimum compression would reduce the size
		of this 524288 byte file by 0 percent.

		Chi square distribution for 524288 samples is 252.21, and randomly
		would exceed this value 53.77 percent of the times.

		Arithmetic mean value of data bytes is 127.3803 (127.5 = random).
		Monte Carlo value for Pi is 3.144482210 (error 0.09 percent).
		Serial correlation coefficient is -0.002599 (totally uncorrelated = 0.0).
		
	USING NON-SECURE MODE
	Generator code: randomBytes(1048576, false, true, "", $rounds, $drop);
	Output:
		Entropy = 7.999840 bits per byte.

		Optimum compression would reduce the size
		of this 1048576 byte file by 0 percent.

		Chi square distribution for 1048576 samples is 232.65, and randomly
		would exceed this value 83.90 percent of the times.

		Arithmetic mean value of data bytes is 127.5482 (127.5 = random).
		Monte Carlo value for Pi is 3.139217908 (error 0.08 percent).
		Serial correlation coefficient is -0.002567 (totally uncorrelated = 0.0).
		
	
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
Something went wrong with that request. Please try again.