Streamdice makes a collection of keyboards with permuted buttons, where each unique keyboard set is generated from a "hash" random seed, all of which are produced by the provided encryption keys. The keyboard below [it may look crowded if seen from a phone or small tablet] demonstrates how we can create a unique shuffled keyboard from a specific hash:
Keyboard Hash: # |
||
Text Out: |
The shuffled keyboards are periodically repeated per each character type. Streamdice is
is therefore a stream cipher 😯.
The number of unique shuffled keyboards is equal to the number of digits used for key # 2,
while key # 1 nests each of the digits from key # 2 to create the hashes.
In simple words, each hash is a function of both keys. The
white paper
explains this process in more depth
This site uses streamdiceJS, the JavaScript implementation of the streamdice algorithm.
If a stand-alone program is desired for additional security reasons, the C++ version of
streamdice may be used. Streamdice available for download on Github (see right / bottom panel).
Pseudo-Random Number Generators (PRNGs):
streamdiceJS uses the
Mulberry32
PRNG,
while the standalone C++ streamdice program uses
the
std::mt19937 Mersenne Twister engine
. Therefore,
these different implementations will generate different ciphertext.