Deprecated

In favour of

cprng-aes

Crypto Pseudo Random Number Generator using AES in counter mode.

http://github.com/vincenthz/hs-cprng-aes

LTS Haskell 21.25:0.6.1@rev:1
Stackage Nightly 2023-06-21:0.6.1
Latest on Hackage:0.6.1@rev:1

See all snapshots cprng-aes appears in

BSD-3-Clause licensed and maintained by Vincent Hanquez
This version can be pinned in stack with:cprng-aes-0.6.1@sha256:964851f00ee700ec6b0f5e32a045cf8aed5fb776881756f8f2199899cfd3241a,2241

Module documentation for 0.6.1

CPRNG-AES

This module provides a crypto pseudo random number generator using AES in counter mode.

to import:

import Crypto.Random.AESCtr

to use:

rng <- makeSystem
let (ran, rng') = getRandomBytes rng 1024

it’s also an instance of CryptoRandomGen from the crypto-api package.

Statistics

Using ent, a randomness property maker on one 1Mb sample.

cprng-AES:

Entropy = 7.999837 bits per byte.
Optimum compression would reduce the size of this 1048576 byte file by 0 percent.
Chi square distribution for 1048576 samples is 237.02.
Arithmetic mean value of data bytes is 127.3422 (127.5 = random).
Monte Carlo value for Pi is 3.143589568 (error 0.06 percent).

Compared to urandom with the same sampling:

Entropy = 7.999831 bits per byte.
Optimum compression would reduce the size of this 1048576 byte file by 0 percent.
Chi square distribution for 1048576 samples is 246.63.
Arithmetic mean value of data bytes is 127.6347 (127.5 = random).
Monte Carlo value for Pi is 3.132465868 (error 0.29 percent).