Cryptographic algorithms that use two different keys (public and private) for encryption and decryption of messages.