Cryptography is the science and art of securing messages through techniques that transform plaintext into ciphertext. There are two main categories of cryptography: symmetric key cryptography which uses the same key for encryption and decryption, and asymmetric key cryptography which uses separate public and private keys. Cryptography aims to provide security goals such as confidentiality, integrity, non-repudiation and availability of data through the use of encryption algorithms, keys and ciphers.