Encrypt A File
 

In the box below please input a file that you would like to encrypt using the XOR cipher. This file will be uploaded to the server, encrypted, and presented to you for download. You can then use this file as the input to the break below.

Enter Key:
Encrypt This File:
 

Decrypt A File
 

In the box below please input a file that you would like to decrypt using the XOR cipher. This file will be uploaded to the server, decrypted, and presented to you for download. You can then use this file to verify the results of a break.

Enter Key:
Decrypt This File:
 

Find Solution To XOR Cipher
 

This allows you to take a file encrypted with the XOR cipher and, with only some assumed knowledge about its format, deduce both the plain text and the key.

Key Length: This is so you can specify the key length manually. The algorithm is perfectly capable of finding this value on its own, but its choice is based on the most probable length. If it chooses an incorrect value for the key length you will not get the correct solution. This gives the user the option of specifying the length, in the case where the algorithm chooses the wrong one. You can find the possible key lengths in the data output.

Set KAPPA_P: The KAPPA_P value is described below. One would use this option if the target plain text is something other than standard ASCII. To get the KAPPA_P for your target plain text use the option for getting KAPPA_P below. (Default is: .06721)

Only IOC: This means the program will only print the IOC (Index of Coincidence) information about the ciphertext. One would use this option to get an idea of the possible key lengths and if the KAPPA_P value needs to be adjusted. A better KAPPA_P value will lead to more accurate key length predictions.

ALPHA Threshold: The algorithm depends on a PHI test to determine its probable key lengths. In this test there is a PHI_R (PHI random) and a PHI_P (PHI plain text) and an observed PHI. To choose a key length that looks good we want our observed PHI to fall between PHI_R and PHI_P: the closer to PHI_P the better. The problem is, there are many observed PHI values that meet this criteria. So we are using ALPHA to represent a requirement for marking candidate key intervals. We expect the candidate keys to be at least ALPHA percent of PHI_P. The default is 85%. If the key interval is a rhythmic, then it is best to adjust this percent to a value that yields a fairly standard interval, and thus a base key length with multiples.

DELTA Threshold: Once the key length is deduced the algorithm moves on to a basic monoalphabetic analysis of the ciphertext at intervals of the key length. This means that if the first character of the key is an 'H' that a decryption based on 'H' should, for all 256 bytes, yield something that looks like our target plain text. The target plain text here is referred to as DELTA data, and the DELTA Threshold is how close we would like our decryption based on 'H' (or some key character) to be to our DELTA data. The default DELTA Threshold is 45%, because it works empirically. There is a 20% scalar thrown in behind the scenes for the calculation of the best looking key, but 45% works well for standard ASCII English text. One may want to change this value if working with anything else.

DELTA Data: This is a file that looks and smells like the original plain text, but is NOT the same. For all intents and purposes this is the same data file use for the alternate KAPPA_P test. It will allow for an empirical frequency table based on something OTHER than standard ASCII English text. The data here will be used in conjunction with the DELTA Threshold above; however, you may not need to change the Threshold from its default value. So again, use this option when you are trying to solve a cipher for for anything other than standard ASCII English text.

Key Length:
Set KAPPA_P:
Only IOC:
ALPHA Threshold:
DELTA Threshold:
DELTA Data:
Crack This File:
 

Find Target KAPPA_P Value
 

This option is used to find the KAPPA_P value for a given target plain text. The algorithm uses a target KAPPA_P of .06721 based on standard ASCII plain text. Aside from the XOR encryption algorithm, this is the only assumption one must make about the plain text. If the text is a Word document, image file, or binary executable file, the default target KAPPA_P value will not be suitable. The process of making a KAPPA_P value is to run through the target file counting the number of times some byte occurs. The algorithm then sums the ratio of that frequency count of those bytes to the total number of bytes in the file, all squared to get a target KAPPA_P value for that plain text. (i.e. (F_i/N)^2, 0 < i < 256) NOTE: the KAPPA_P value will later be used by the PHI test to compare the observed KAPPA_R with the target KAPPA_P. Also, do not use the same plain text you will be trying to break as the target. The intention is not to have any knowledge about the exact format of the original plain text.

Target File: