Encryption is one of the most important cryptographic primitives. It enables two par- ties, Alice and Bob, to communicate over an insecure channel in such a way that an eavesdropper, Eve, cannot understand what is being exchanged. Although it seems an easy task to identify properties that a "good" encryption scheme must fulfill, it turns out that rigorously defining the right security notion is not trivial at all. Security is context sensitive. We open this manuscript introducing public-key cryptography. Then we survey the security of such a primitive, defining rigorously an attacker, i.e. stating his goal and means. The manuscript has two main parts. The first one is about revocable anonymity. We present two original schemes preserving the sender's privacy but keeping the ability foe a third trusted part to reveal the sender identity under certain conditions, e.g.: under a court request. This primitive has been applied in the public-key encryption context and in broadcast encryption as well. In the second part, we describe and improve a public-key encryption scheme due to Goldwasser and Micali. Our work generalises their scheme providing a family of encryption schemes. The original scheme can be recovered for a given choice of the k parameter. Our goal was to improve the bandwidth of the original scheme letting a larger message to be encrypted in a cipher of the same length.