Home
Eruption - What is LavaRnd?
Obsidian - FAQ
Lava - Demos
Lavaologists - About us
Strata - New and old stuff
Magma - Download
Bedrock - Developers

LavaRnd Digital Blendertm Algorithm

Digital Blender Algorithm

The LavaRnd Digital Blender algorithm consists of an n-way turn; n different SHA-1 cryptographic hash operations running in parallel, and n different xor-rotate and fold operations.

The n-way turn converts the digitized chaotic source into n sets of data. Each of the n sets are fed into a SHA-1 cryptographic hash operation to produce 20 octets of data. Each of the n sets are also fed into a xor-rotate and fold operation that also produces 20 octets of data.

The 20 octets of data produced by a given xor-rotate and fold operation is xor-ed with the 20 octets produced by the next SHA-1 cryptographic hash operation to produce 20 octets of random numbers. That is, the output from the 1st xor-rotate and fold operation is xor-ed with the output from the 2nd SHA-1 cryptographic hash operation yielding 20 octets of random numbers. The output from the 2nd xor-rotate and fold operation is xor-ed with the output from the 3rd SHA-1 cryptographic hash operation yielding 20 more octets of random numbers. This continues until the output from the final xor-rotate and fold operation is xor-ed with the output from the 1st SHA-1 cryptographic hash operation to yield the final 20 octets of random numbers.

The LavaRnd Digital Blender, in total, produces n*20 octets of random numbers.

Digital Blender choice of n

The LavaRnd Reference implementation Digital Blender determines the choice of n, with respect to the n-way turn, n SHA-1 cryptographic hash operations and n xor-rotate and fold operations, from 2 parameters:

  • The amount of data read from the chaotic source
  • LavaRnd output rate factor called alpha

We recommend that you choose n to be are either 1 or 5 mod 6. By avoiding multiples of 2 and 3, you will distribute pixel encodings cross multiple turns.

Lavarnd computes n from alpha as follows:

sqrt( input_length * alpha / cryptographic_hash_length ) rounded up to an integer that is 1 or 5 mod 6

Reasonable alpha rate factors typically range from 1/16 to 16, with the default rate being 1.0. The higher the alpha rate, the more output is produced from a given amount of input. High alpha rates cause the Digital Blender to use larger n values (in terms of n-way turns, SHA-1 cryptographic hash operations, and xor-rotate and fold operations).

Assuming 19200 octets of input, the following table shows the number of octets generated with respect to alpha:

input length alpha rate n-way level octets generated
19200 16.0 71 1420
19200 12.0 61 1220
19200 8.0 49 980
19200 6.0 43 860
19200 4.0 35 700
19200 3.0 31 620
19200 2.0 25 500
19200 1.5 23 460
19200 1.0 17 340
19200 0.5 13 260
19200 0.25 11 220
19200 0.125 7 140
19200 0.0625 5 100

Digital Blender example

Assume that 19200 octets of luminance are collected from a webcam CCD. Using an alpha rate of 1.0, the Digital Blender will operate with an n value of 17.

The 19200 octets are first fed through a 17-way turn to produce 17 output sets. Each of the 17 output sets is fed into 17 different SHA-1 cryptographic hash operations. Each of the 17 output sets is also fed into 17 different xor-rotate and fold operations.

The output of each of the 17 SHA-1 cryptographic hash operations is a 20 octet value. The output of each of the 17 xor-rotate and fold operations is also a 20 octet value. The 20 octets of a given SHA-1 cryptographic hash operation is xor-ed with the 20 octets produced by the previous xor-rotate and fold operation yielding 20 octets of random numbers.

The final set of 17 xor's are concatenated to produce 17*20 = 340 octets of random data.

What is next?

SourceForge.net Logo
Home  |   LavaRnd?  |   FAQ  |   Demos  |   About us  |   New & Old  |   Download  |   Developers  |   Tour