In this kind of [[cryptosystem]], the [[encryption key]] and the [[decryption key]] are fundamentally different, and it is impossible - or at least computationally infeasible - to determine the decryption key from the encryption key. This means that the encryption key can be made public
Asymmetric encryption is a kind of [[cryptography]]
## General form
The general form of a public-key encryption system has three algorithms:
```Haskell
PKE (Gen, Enc, Dec) :
Gen: () -> pk, sk
Enc: (pk, m) -> c
Dec: (sk, c) -> m
```
The generating algorithm creates the public key and the secret key. The encryption algorithm takes a plaintext $m$ and the public key, and maps it to a [[ciphertext]]. The decryption algorithm takes the private, or secret, key and the ciphertext and maps it to a [[plaintext]].