Skip to main content

Python package for alternate true random number generator using sources provided by either TRNG online services, plaintext uint8 files (separated by whitespace) or collections of ints.

Project description

sourcerandom for Python

True randomness, with minimal fuss.

Alternate random number generator using sources provided by either True Random Number Generator online services (RANDOM.org and qrng.anu.edu.au), plaintext uint8 files (separated by whitespace) or collections of ints.

sourcerandom's SourceRandom class extends SystemRandom class found in default random package, and only overwrites the getrandbits method, meaning all of the functionality of random package is included and unchanged.

sourcerandom obtains bytes from the given source, which are then used to generate random numbers. The bytes are cached for quick access - the amount of cached bytes can be set by the user.

OnlineRandomnessSource enumerator is provided to easily choose between RANDOM.org (RANDOM_ORG) and qrng.anu.edu.au (QRNG_ANU).

Since the bytes generated by the online services are truly random (please refer to the services for explanation), they can be theoretically used for cryptography instead of OS sources. However, I hold no responsibility for any problems or damages this may cause.

Async/multithread friendly.

Requires Python 3.5.2 or above, and the requests package.

Pull requests are encouraged :D

Installing

pip install sourcerandom

Usage

import sourcerandom

# From an online source

RAND_GEN = sourcerandom.SourceRandom(source=sourcerandom.OnlineRandomnessSource.QRNG_ANU) # Initialize the generator - use the same generator to take advantage of caching

print(RAND_GEN.randint(0, 20)) # Every method from random package is included

# From file

RAND_GEN = sourcerandom.SourceRandom(source="path/to/file") # File has to be a plaintext file with integers from range of 0 to 255 separated by whitespace, path is a simple string, relative to working directory. Files are read in cache_size chunks.

# From collection

BYTES_LIST = [ 0, 156, 245, 63, 52 ] # Integers from range of 0 to 255 separated by whitespace

RAND_GEN = sourcerandom.SourceRandom(source=BYTES_LIST)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
sourcerandom-1.0.2.tar.gz (6.1 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page