/softrng

Simple RNG framework to learn and research.

Primary LanguageCGNU Affero General Public License v3.0AGPL-3.0

SoftRNG

Softrng is a collection of basic portable tools that can be used to explore random number generators and cryptography. It comes with basic algorithms and integrates with other software packages such as dieharder and practrand. The manual is designed to help the user ease into the principles of basic cryptography building blocks. The information database will contain extensive documentation about the algorithms, their flaws and strengths, their history...

It follows the UN*X philosophy, each tool have a very specific function.

  • Generator's output are all endless and binary.
  • Filters are used to manipulate the stream(s).
  • Simple syntax. Every command start with one of three letters and a dash (s- f- t-).

The tools combine together to let the user create their own solutions or observe different algorithms. It requires no knowledge of coding to get started. Commands themselves are small and focused.

Nitty gritty

While internal commands are named directly in the SoftRNG convention, external packages are integrated by creating shortcuts, implemented by short shell scripts placed in /usr/local/lib.

Installation

SoftRNG requires a Unix-like environment and a C compiler to install. It has been tested under macOS(aarch64) and Debian/Linux(aarch64).

If you are using Windows, you can install WSL.

Dieharder build requires libtool. You can install it with "brew install libtool". If you install dieharder after completing this installation, run "softrng install" (as root) to create the missing shortcuts.

  1. Open a terminal.
  2. Go to the folder containing this note.
  3. Run "./install.sh" as root (sudo, su).

To do

Write example solutions. Document every available command in a text file placed in the help directory (s-ent-getent.txt...).

Future developments

A graphical command builder could be a good teaching aid. Something online maybe? A portable GUI app that handles the piping internally?. Games where you have to solve cryptographic challenges, match a specific sequence maybe?

Anyone can help, drop a message in the discusison board with your comments or suggestions.