1) There are only two states possible for a bit scramble - pass
through or complemented. Generate an array of 64k bit flags indicating
which operation is to be done on the input bit when the index of the
bit flag is selected.
2) Generate 16 arrays of 16 bits by 64k entries which give either the
index of the array 1) or which are 16 times one bit of the
concatenated index to be taken from each of the 16 arrays, depending
upon a user option. If one bit from each to be concatenated to form an
index is the option, then the order in which the 16 array's bits are
used when generating the index is determined below. If the bits are
concatenated, then the order in which the array's bits are used may be
from right to left or left to right depending upon a user option. If
the index is taken from each array directly, then the order in which
the indexes are pulled is determined below.
3) Generate an array of 64k entries each of which is 16 bytes. The 16
bytes are used to specify which of the 16 arrays in 2) above are to be
used for the next bit, or to specify the order of the arrays in which
the bits are concatenated to form an index. A user option specifies
whether the 16 byte values ranging from 0-15 are to be generated
randomly without duplication, or generated randomly with duplication
allowed.
4) Generate an array of 64k random number seeds which are used to
produce the arrays 1) 2) 3) above. When a random number seed has a
short life and begins to repeat without recovery, switch to another
seed. When a seed is switched, the index of the next seed to be used
can be simply incremented, or selected by some more esoteric technique
depending upon user options. For example rather than simply
incrementing the index, the next index may be determined from the
value of the discarded seed in some manner.
5) Generate an array of 64k 16 bit numbers from a master seed list
which indexes the start location in 4) for pulling a random number
seed. As the input bit stream is processed, periodically increment the
index to this array to prevent reuse of the arrays in predictable
ways. For example, the array 3) above processes one megabit without
repetition. For multiple gigabyte archives the reuse of a coding
scheme would be unacceptable. With 64k start indexes available, the
scope without repetition is increased to 64 gigabytes, which should be
sufficient. The process of switching to the next start index could at
user option involve regenerating the arrays 1) 2) 3) from 4).
Composing this document took one hour. I am posting it early because I
have been getting ready for a July 4 post for a couple of weeks now. I
see nothing further to add to make this specification more robust, so
here is the July 4 post early, on Father's Day. The next two posts
will be on Labor Day September 1 and Christmas. I have received no
gifts or any other form of compensation for any of this "Merry
Christmas" series. If you have found the ideas to be useful, then
please send a check to me at 3395 Harrell Road, Arlington TN
38002-4261.
Lonnie Courtney Clay Laughing Crazy Coot TARZAN Chic Logo Guy