The Encryption Process

Once the message data has been captured in the form of a single data stream, the message header is created for the encrypted file.  The header contains 4 parts.  The first two characters, transmitted unencrypted, are a hexadecimal pair representing the message mode, either "." for stream mode or "z" for hexadecimal mode, converted respectively to 2E and 7A.  The following two parts comprise the hash and the rotation index generated by the random process.  The final part is the original name of the file to be encrypted.  These are assembled as a plain language header and then encrypted, as described by Equations (2) and (3) on the next page, using the initial register setting.  The encrypted header is then added to the first two characters as a series of hexadecimal pairs.  The final character of the message header is an unencrypted colon (:), which is used to indicate the end of the header.  A typical message header is shown in Figure 4.

Figure 4:  Typical Message Header

After header generation, Humber then rotates the registers from the positions at the end of header encryption.  In the case of all four registers, the rotation used is ROTATE RIGHT CIRCULAR.  The rotations produce the message settings for the message being encrypted.  This means that no matter how many times the same message is encrypted, it will always produce a different cipher stream.  The rotation index is treated as four hexadecimal pairs, each pair indicating the number of rotations for one register.  To achieve this, the hexadecimal pair is converted to a decimal value (n).  The number of rotations (n) for each register lies in the range 0 ≤ n < 255.  The rotation process is shown in Figure 5.

Figure 5:  Rotation of the registers to find message settings

Once the registers have been set to the correct value, the hash function is split into four in the same way and each part modifies the values of every element of one register via a bitwise XOR function:

Reg(i) = Reg(i) XOR n