The applet above will encrypt the text entered in the message field using the 'Advanced Encryption Standard' (AES-128) that was developed by John Daemon and Vincent Rijmen. In addition, it visualizes the complete encryption process step by step and bit accurate.
The 128-bit (initial) key that is needed during the encryption process can be specified in the key field in the form of a 16-digit hexadecimal number. If you don't change anything, the key 00 00 00 00 00 00 00 00 will be used by default.
The representation of your message (ASCII, binary, hexadecimal) can be changed any time in the options panel by clicking on the corresponding button.
To encrypt your message, you may click on the encryption button. It's no problem to encrypt your message several times but you should keep in mind that it is necessary to decrypt your message the same number of times to get back to your original message.
Once your message is encrypted, the whole encryption process from your original text to the resulting cipher text can be traced:
First of all, you should decide whether you want to trace the encryption process of your actual message or the expansion of your 128-bit initial key to 10 more 128-bit round keys (expanded keys) which are used during the 10 encryption rounds.
In the first case, choose any of the blocks your message was divided into from the tree structure on the left side of the applet. In the other case, you should choose 'Expanded Keys' from the tree strucure. As from now, it is easily possible to navigate through the different states of encryption/expansion using the table spinner object in the options panel.
Let's first assume you chose one of the blocks of your message (that is to say, one of the childs of the path 'AES/Message/...'):
According to the number of the table spinner, the corresponding 4x4-matrix (the state) that belongs to that encryption round will be shown in the upper right corner of the view panel. Below of this matrix is the so-called derivation panel. The purpose of this panel is to show you the way the information is processed. Therefore, you can see every single transformation that is used to get from the previous state of encryption to the state you chose in the table spinner. If you click on a specific cell in the 4x4-matrix, all entries that depend on this cell are highlighted in red (message state) or blue (key state or constant) in the derivation panel. In contrast to the other transformations, the way the entries of a matrix are substituted during the bytesub-transformation is not very obvious. Hence, if you click on the entry of a matrix that is the result of a bytesub-transformation, the process that leads to this specific entry will be shown in a more detailed manner in an extra window.
Now secondly, let's assume you chose one of the childs of the path 'AES/Key/...' to explore the procedures concerning your specified key:
Most of the time, you will select 'AES/Key/Expanded Keys' (you may select 'AES/Key/Initial Key' as well but this won't be very interesting as it only shows the way your initial key was transformed into a key matrix). According to the number of the table spinner, the corresponding expanded key matrix is shown in the 4x4-table. As the generation of the round keys (expanded keys) is done column by column, the derivation panel shows the four columns of the selected key matrix (in black) as well as the four columns of the previous key matrix (on the left/in light grey) and the next key matrix (on the right/in light grey). If you want to see the process that leads to a particular column of the selected key matrix, you can just click on that column in the derivation panel. Furthermore, if a cell is selected in the 4x4-table, the dependencies are shown as described above.
A more detailed description of the applet as well as the underlying algorithm is available in german: Documentation (Last change: 15.09.2006)
6 Comparing Ages |