This directory defines two executables: ranH and ranM.  These can be used
in a UNIX pipe to confuse and diffuse values from stdin to stdout.  One use
is to take a source of non-repeatable measurements and yield what passes
for true random numbers.  Eg.,

	gzip -c </dev/audio | ranH -n 2 -x 4 | ranM >random-pipe

These can be mixed and matched at will.  Each takes a certain amount of
input from the stdin for its own use , so if you drive from a constant
length input, too many rounds might leave you with no output bytes.


				 - Carl Ellison  (cme@acm.org)

==============================================================================

			Directory Contents

======================================== Makefile

Basic makefile

======================================== README

This file.

======================================== global.h
from ../md5/

======================================== md5.h
from ../md5/

======================================== ranH.c

	ranH -n y -x z

takes MD5 of (16+w) bytes of stdin (y <= w <= z) and puts out 16 bytes to
stdout (or 15 bytes if a ranno value is needed to choose the next w), then
loops until EOF.

======================================== ranM.c

	ranM

takes stdin to initialize rnd()'s array, then uses rnd() output to do
Algorithm M (cf., Knuth Vol.2) on stdin, writing that to stdout.

or
	ranM <fname>

takes a stream of inputs from <fname> (possibly a UNIX named pipe being
driven by a ranno generation chain) to drive Algorithm M in moving bytes
from stdin to stdout.

Note: ranM starts by taking over 32KB of input from stdin for its own use.
stdin should probably not be a file.

======================================== rnd.c

Utility to ranM

	This is a standard subtract-with-borrow byte generator.


