Experiment 8: Decryption of ciphertext using Twofish algorithm
Twofish Algorithm Decryption Process
The Twofish decryption process involves reversing the encryption steps, utilizing the ciphertext and the original secret key. The algorithm comprises multiple rounds, each with its own distinct set of operations.
Key Schedule
The decryption procedure begins with the key schedule, responsible for generating round subkeys derived from the initial secret key. This step is pivotal as it establishes the necessary values for subsequent encryption and decryption operations.
Inverse F-Function
Twofish employs a sophisticated F-function, and during decryption, its inverse is applied. The F-function integrates operations like the Feistel network, substitution-permutation network (SPN), and MDS matrix multiplication. In decryption, these operations are reversed or inverted to reconstruct the original data.
Feistel Network Decryption
Twofish employs a Feistel network structure, splitting the data into two halves for separate processing. During decryption, the F-function is applied to one data half using subkeys generated from the key schedule. The outcome is then combined with the other half of the data.
Subkey Mixing
In Twofish, subkeys are mixed with the data at various algorithm stages. During decryption, subkeys are applied in the reverse order compared to encryption. This ensures accurate reconstruction of the original data.
Final Round
Upon completing the specified rounds, the final round encompasses additional operations to guarantee correct data decryption. These operations may involve XOR-ing with specific constants or applying additional modular arithmetic.
Output
The decrypted data is obtained after completing all rounds and final operations. This output represents the plaintext, originally encrypted using the Twofish algorithm.