FIGURE 18 sets out detail underlying
step 1740, fragmenting original data files 0220. This processing is set up
within a loop that may be traversed hundreds of thousands of times for one
set of original data files 0220. There is considerable detail within each
step shown in FIGURE 18. A good implementation depends on checking very
quickly whether each particular step applies on a particular iteration. For
example, steps 1810 (check input status), 1830 (process random table
matters), and 1860 (ensure space for fragment) normally amount to nothing
more than a very high speed check of a condition before proceeding to the
next step. The core steps of fetching a fragment guide and interpreting it
1840, applying the guide to disguise and append a fragment to a fragment
heap 1880, and recording an action 1890 are each very quick. The net result
is that the user perceives a rapid completion of the task of privatizing an
entire set of original data files 0220. The version in the microfiche
appendix demonstrates the speeds that can be attained in a good
implementation.
FIGURE 18 consists of the following
repetitive steps.
Step 1810 is to reset and check input
data status. There is no need each time to check every one of the up to 16
inputs , but only the one input from which a fragment was drawn in the
preceding iteration. If 16 or more bytes remain (enough for the largest
possible fragment), then nothing more remains to be done in step 1810. In
the exceptional situation in which the number of bytes remaining in the
most recently active original data buffer 1612 has dropped below 16, only
then is it necessary to proceed through the detail of step 1810 found in
FIGURE 19.
Step 1820 is to determine whether every
input stream has reached the point of having no further input data. This
amounts to checking a flag that is set within the detail in FIGURE 19. If
more input data exists, processing passes to step 1830. Once and once only,
when the point is reached in which all data has been used up, processing
passes instead to step 1750, finalizing and dispersing the composite files
0250.
Step 1830 serves the purpose of
reducing predictability and suppressing the emergence of patterns that
might otherwise inform a reverse engineer who is trying to interpret files
within a privacy protected archive 0261. Processing random table matters
1830 may be subdivided into periodic swap of the active random table 1831
and periodic swap of the start position step 1832 within the active random
table 0230.