Cryptography has existed, in one form or another, for most of recorded history. We can see examples of such practices that stretch in complexity from very simple substitution ciphers to the fairly complex electromechanical machines that were used just before the invention of the first modern computing systems. Although such primitive cryptographic methods would not stand up under modern methods of cryptographic attacks, they still form the basis for our modern algorithms. There are three main categories of cryptographic algorithms: symmetric key cryptography, also known as private key cryptography; asymmetric key cryptography, also known as public key cryptography