Cryptography has become an excellent way to provide secure communication in the presence of dangerous or malicious third parties known as adversaries. Cryptography mainly consists of encryption which uses an algorithm and a key to change a given input, which is usually just plain text into an encrypted output. This encrypted output is known as ciphertext. A given algorithm will always turn a given input into the same encrypted ciphertext if given the same key.

An algorithm is considered to be secure if the attacker cannot determine any part of the plaintext or the key if given the ciphertext. Further, they should be unable to figure out the content of the key using a large number of ciphertext/plaintext combinations using the key. This is typically done in a forceful deciphering method known as brute-force attacks where the adversary constantly taxes the system trying various combinations of the key until the right key is encountered.

There are different types of cryptographic methods available to encrypt data. The main two methods are symmetric cryptography and asymmetric cryptography.


Symmetric Cryptography: In symmetric cryptography, the same key is used in both encryption and decryption. In this case, both the sender and receiver should already have a shared key. The problem came from the key distribution which was the main reason that asymmetric cryptography was developed.

Asymmetric Cryptography: In this type of cryptography, there are two separate keys used for encryption and decryption. In this system, every user in this system has a private and a public key. The private key is kept secret at all times and the public key can be distributed freely among any number of people. This is because the data that is encrypted with the public key can only be deciphered using the corresponding private key.

The main disadvantages of asymmetric cryptography are that it is very slow and can only encrypt pieces of data that are smaller than the key ( usually smaller than 2048 bits or smaller) while symmetric cryptography is very fast and used for encrypting large amounts of data like databases. A good compromise is to use both types, symmetric being used to encrypt large amounts of data and then asymmetric is used to encrypt the key that was used to encrypt the data.

There are many instances where the communication has to be secure and it should be able to give certain assurances like confidentiality, integrity and availability of data. In processes that involve sensitive information like bank transfers, your data must not fall into the wrong hands. It is in these cases that encryption and cryptography, in general, are very important.