예제 #1
0
def test_aes():
    sed_seed = rg.SeedSequence(0)
    bit_gen = rg.AESCounter(sed_seed)
    bit_gen.random_raw(1)
    state = bit_gen.state
    assert_equal(state["s"]["counter"],
                 np.array([4, 0, 5, 0, 6, 0, 7, 0], dtype=np.uint64))
    assert_equal(state["s"]["offset"], 8)
    assert_equal(
        state["s"]["seed"],
        np.array(
            [
                15793235383387715774,
                12390638538380655177,
                14535948455753730044,
                5638452070979447378,
                9872913402542273141,
                2519700719880636476,
                6568914210857343685,
                1519603011295473815,
                10978339004909591939,
                13451446543017809343,
                1287446329370806453,
                345470396342368290,
                7757725448560514988,
                15061683594572235283,
                3306634883589962969,
                2965863995102004475,
                18090342262254749848,
                3028696162780629643,
                9873779358970902643,
                11542281185009237128,
                15127027345177397562,
                18151169116043183025,
            ],
            dtype=np.uint64,
        ),
    )
    expected_state = np.array(
        [
            12391658052641588024,
            10714498261726844411,
            16302282886881395158,
            226768610308972488,
            3645593224307478361,
            6535853598405435806,
            13777657176506182534,
            3383728099036958951,
        ],
        dtype=np.uint64,
    )
    if BIG_ENDIAN:
        expected_state = expected_state.byteswap()
    expected_state = expected_state.view(np.uint8)

    assert_equal(state["s"]["state"], expected_state)
예제 #2
0
def test_sfmt():
    sed_seed = rg.SeedSequence(0)
    bit_gen = rg.SFMT(sed_seed)
    bit_gen.random_raw(1)
    state = bit_gen.state
    assert_equal(state["state"]["state"], stability_results.sfmt_state)
    assert_equal(state["state"]["idx"], stability_results.sfmt_idx)
    assert_equal(state["buffer_loc"], stability_results.sfmt_buffer_loc)
    assert_equal(state["buffered_uint64"],
                 stability_results.sfmt_buffered_uint64)
예제 #3
0
def test_dsfmt():
    sed_seed = rg.SeedSequence(0)
    bit_gen = rg.DSFMT(sed_seed)
    bit_gen.random_raw(1)
    state = bit_gen.state
    assert_equal(state["state"]["idx"], stability_results.dsfmt_idx)
    assert_equal(state["buffer_loc"], stability_results.dsfmt_buffer_loc)
    assert_allclose(state["buffered_uniforms"],
                    stability_results.dsfmt_buffered_uniforms,
                    rtol=1e-5)
    assert_equal(state["state"]["state"], stability_results.dsfmt_state)
예제 #4
0
def seed_sequence_state(bit_generator, n_streams=2, entropy=None):
    bitgen = getattr(rg, bit_generator)
    seed_seq = rg.SeedSequence(entropy)
    children = seed_seq.spawn(n_streams)
    return [bitgen(child) for child in children]
예제 #5
0
#!/usr/bin/env python
"""
This file contains an exampls of a configuration file
that can be used by practrand-driver.

Typical usage:

python practrand-driver.py -if practrand-driver-config.py | \
    ./RNG_test stdin64 -tlmax 1TB -multithreaded
"""
import numpy as np

import randomgen as rg

ENTROPY = 86316980830225721106033794313786972513572058861498566720023788662568817403978
ss = rg.SeedSequence(ENTROPY >> 128)
bg = rg.SFC64(ss)

seen = set()
remaining = NUM = 8192
while remaining:
    vals = bg.random_raw(remaining) | np.uint64(0x1)
    seen.update(vals.tolist())
    remaining = NUM - len(seen)

bitgens = []
for k in seen:
    bitgens.append(rg.SFC64(rg.SeedSequence(ENTROPY), k=k))
output = 64
예제 #6
0
def test_speck():
    sed_seed = rg.SeedSequence(0)
    bit_gen = rg.SPECK128(sed_seed)
    bit_gen.random_raw(1)
    state = bit_gen.state
    round_key = np.array(
        [
            15793235383387715774,
            15793235383387715774,
            18284178489097793422,
            18284178489097793422,
            15216715163726632813,
            15216715163726632813,
            4485001273524005066,
            4485001273524005066,
            5155955939136278502,
            5155955939136278502,
            6746837586821959591,
            6746837586821959591,
            17240981843582736005,
            17240981843582736005,
            15913616031120359527,
            15913616031120359527,
            10736152986357956654,
            10736152986357956654,
            17578412605774299685,
            17578412605774299685,
            11746094550028141055,
            11746094550028141055,
            12349058196842705013,
            12349058196842705013,
            12083707282361316062,
            12083707282361316062,
            5359586807691737559,
            5359586807691737559,
            9231278599223380449,
            9231278599223380449,
            17651995584888691920,
            17651995584888691920,
            12732670852050470327,
            12732670852050470327,
            9879446609994856659,
            9879446609994856659,
            3375505017917309163,
            3375505017917309163,
            2895316718560254149,
            2895316718560254149,
            15513520198647448288,
            15513520198647448288,
            17647887543272890676,
            17647887543272890676,
            3893346907942253665,
            3893346907942253665,
            5738076513710395834,
            5738076513710395834,
            18229901514159150581,
            18229901514159150581,
            2621676699598916037,
            2621676699598916037,
            18118306437787214727,
            18118306437787214727,
            17976722144562375930,
            17976722144562375930,
            12676674378702818668,
            12676674378702818668,
            2422998901875546976,
            2422998901875546976,
            16988403034310549836,
            16988403034310549836,
            17955948645788572495,
            17955948645788572495,
            3967069179853279711,
            3967069179853279711,
            4366939844701077376,
            4366939844701077376,
        ],
        dtype=np.uint64,
    )
    ctr = np.array([6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0], dtype=np.uint64)
    assert_equal(state["state"]["ctr"], ctr)
    assert_equal(state["state"]["round_key"], round_key)
    assert_equal(state["state"]["offset"], 8)
    assert_equal(state["state"]["rounds"], 34)
    buffer = np.array(
        [
            10504129596355372223,
            1318022532533367005,
            6998045227391158025,
            381710739812180401,
            1300591519051043599,
            607837839416765688,
            17151091279695289275,
            13729019831678987542,
            6486144136891887409,
            6729719913441295618,
            15183619352825529528,
            13293035453993191235,
        ],
        dtype=np.uint64,
    )
    assert_equal(state["state"]["buffer"], buffer)