I. Introduction
Cryptography is where security engineering meets mathematics. It provides us with the tools that underlie most modern security protocols [1]. Cryptography includes data encryption and decryption using a key. While encryption transforms a plaintext into an incomprehensible cipher text, decryption reverses the process. Almost all life fields use secure systems to store and transfer data: banking, military, wireless sensor network, communication and embedded systems, etc. Along history, many algorithms have been used; Caesar cipher is known as the first cryptography algorithm, it consists on shifting the letters of a message by three using alphabetical order to obtain an encrypted message. Also, many machines were used to decipher telegrams during the wars; for instance, the German Enigma and the Japanese Purple [2].