2017 © Pedro Peláez
 

library seedspring

Seeded, deterministic random number generator

image

paragonie/seedspring

Seeded, deterministic random number generator

  • Wednesday, June 6, 2018
  • by paragonie-scott
  • Repository
  • 5 Watchers
  • 23 Stars
  • 512 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 3 Forks
  • 0 Open issues
  • 6 Versions
  • 68 % Grown

The README.md

seedspring

Build Status, (*1)

Seeded, Deterministic PRNG (based on AES-CTR instead of LCG) (Requires PHP 7 or random_compat), (*2)

Security Warning

This is not meant to replace random_bytes(). Think of this as an improvement to srand() + rand(). Do not use this for security purposes., (*3)

Installing

composer require paragonie/seedspring

Usage

use \ParagonIE\SeedSpring\SeedSpring;

// For example
$sharedSeed = str_repeat("\x80", 16);

$rng = new SeedSpring($sharedSeed);

$data = $rng->getBytes(1024);
$int = $rng->getInt(1, 100);

Motivation

A cryptographically secure pseudorandom number generator, such as random_int(), is wonderful for security purposes. However, there are situations where you need to generate a deterministic, pseudorandom byte stream on two devices from a shared seed. (e.g. something like Minecraft's world generator)., (*4)

PHP's native seedable (and insecure) RNGs, rand() and mt_rand(), only support a 32-bit integer seed, which severely limits the possible outputs. Our deterministic RNG supports up to 2^128 possible outputs, since it's based on a 128-bit block cipher., (*5)

Our implementation uses AES-128-CTR to turn a finite, 128-bit key into an practically endless stream of random bytes., (*6)

It will repeat after 2^132 bytes of output. You should consider rekeying after 2^66 bytes., (*7)

For anything security-sensitive, you should rekey after 2^39 bytes. This is because the probability of predicting successive blocks becomes unacceptably high for security operations., (*8)

The Versions

06/06 2018

dev-master

9999999-dev

Seeded, deterministic random number generator

  Sources   Download

MIT

The Requires

 

The Development Requires

06/06 2018

v1.1.0

1.1.0.0

Seeded, deterministic random number generator

  Sources   Download

MIT

The Requires

 

The Development Requires

19/11 2016

v1.0.0

1.0.0.0

Seeded, deterministic random number generator

  Sources   Download

MIT

The Requires

 

The Development Requires

10/02 2016

v0.3.0

0.3.0.0

Seeded, deterministic random number generator

  Sources   Download

MIT

The Requires

 

The Development Requires

23/12 2015

0.2.0

0.2.0.0

Seeded, deterministic random number generator

  Sources   Download

MIT

The Requires

  • php ^7.0.0

 

The Development Requires

22/12 2015

0.1.0

0.1.0.0

Seeded, deterministic random number generator

  Sources   Download

MIT

The Requires

  • php ^7.0.0

 

The Development Requires