Thanks to visit codestin.com
Credit goes to github.com

Skip to content
forked from zazuza7/NistRng

Random Number Generator NIST Test Suite framework for python 3.6 - SAILab - University of Siena

License

Notifications You must be signed in to change notification settings

zghodsi/NistRng

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NistRng

This is a python 3.6 and above implementation of the NIST Test Suite for Random Number Generators (RNGs) based on this repo. The idea behind this work is to make a script oriented object-oriented framework for said tests. This is born from my research since I required to use the tests inside a python research project and I found existing implementation to be not well suited to that task without extensive modifications.

The NIST reference paper can be found at SP800-22r1a.

This work is inspired by the great work of David Johnston (C) 2017, which can be found on github.

Features

  • All the test in the NIST paper vectorized and optimized the best I could
  • Class structure for each test allowing for easy debug and use, both in script and inside broader applications
  • Utility functions to pack the sequence in 8-bits using numpy and to run the tests in multiple ways
  • Cache system both at function level and at test level to improve performance
  • Built-in measurement of time required to perform each test
  • Default Test class and Result class to allow eventual extension to additional tests

License

BSD 3-Clause License

For additional information check the provided license file.

How to use

Use the local repo, and not the packaged version. After setting up the environment, running python numpy_rng_test.py should work.

Current issues

Currently the slow speed of both the Serial and Approximate Entropy tests is an open issue. Any solution or improvement is welcome.

Can I help?

Yes, of course! This project is very side to me, so any help in reporting issues, fixing bugs, testing functionalities and overall improving it is welcome!

Changelog

v. 1.2.1:

  • Improved safe-guard against eventual NaN values that may arise inside the score calculations
  • Added unpack function to return to the original numeric integer value from a 8-bit binary sequence
  • Some minor fixes and adjustments

v. 1.2.2:

  • Fixed SP800_22R1A_BATTERY dictionary which was missing the cumulative sums test
  • Fixed missing parenthesis on test_approximate_entropy.py
  • Fixed bugs on some tests for very long sequences
  • Some minor fixes and adjustments

v. 1.2.3:

  • Fixed binary matrix rank test (credits to @scrambler-crypto)
  • Fixed a frequencies computation bug (w.r.t. tickets) on the linear complexity test

About

Random Number Generator NIST Test Suite framework for python 3.6 - SAILab - University of Siena

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%