MercuryXE is different when compared to common encryption methods available to the public. A technique used in military communications called OTPXOR Bit Manipulation is used. This involves flipping (XORing) bits in the data with a sequence of bits that never repeats (known as a One Time Pad) during the encryption process. MercuryXE uses an innovative technique to create an effective one time pad by using three different keys in the encryption process. Also, with MercuryXE, there is no public key. All parties must have the private keys to encrypt and decrypt files. Data bits are flipped three times, first with the random 8,000,000 bits (key1) in the file "mercuryxe.ra1", again with the random 8,000,008 bits (key2) in the file "mercuryxe.ra2" and then again with the bits in an arbitrary file (key3) "mercuryxe.arb". The files "mercuryxe.ra1" (key1) and "mercuryxe.ra2" (key2) are created when you run "mercinit". The third key (key3) is obtained by renaming any file larger than 1 megabyte to "mercuryxe.arb". MercuryXE reads the keys and flips the bits in the data one byte (8 bits) at a time. If we think in terms of bytes, key1 contains 1,000,000 bytes, key2 contains 1,000,001 bytes and key3 contains greater than 1,048,576 bytes (1 megabyte). The starting points for reading the above 3 keys are changed by changing the 3 six digit numbers on the command line. Changing just one of the numbers by 1 totally changes the encryption sequence ( key1 XOR key2 XOR key3 ). During the key reading process, if MercuryXE reaches the end of a key file it will go back to the beginning of the key file. Also, because key2 is one byte (8 bits) larger than key1, when MercuryXE completes reading all the bytes in key1, it will not have completed reading all the bytes in key2 and the 1,000,000 byte random sequence (key1 XOR key2) will be totally different the next time through. In fact, the 1,000,000 byte random sequence changes 1,000,001 times. Therefore, the combined random sequence (key1 XOR key2) will contain 1 trillion bytes or 8 trillion bits. The arbitrary file (key3) adds a variable to the encryption sequence ( key1 XOR key2 XOR key3 ) that is not based on random number generation. This is very important as it means the encryption sequence can not be regenerated using random number generation only. Also, the starting point for reading key3 is offset by the size of the file being encrypted. This means that the encryption sequence will be totally different when encrypting files of different size. Here is the encryption formula: data_out = data_in XOR ( key1 XOR key2 XOR key3 ). If the person receiving the encrypted file does not have the 3 identical key files used in the encryption process and the 3 six digit numbers on the command line, then the data is useless to them. Please also read the security tips on our main web page: http://freeweb.ozi.nu/~mercuryxe/ Regards, M.K. -------------