A key generator is a protocol or algorithm that is used in many cryptographic protocols to generate a sequence with many pseudo-random characteristics. This sequence is used as an encryption key at one end of communication, and as a decryption key at the other. One can implement a key generator in a system that aims to generate, distribute, and authenticate keys in a way that without the private key, one cannot access the information in the public end. Examples of key generators include linear-feedback shift registers (LFSR) and the Solitaire (or Pontifex) cipher. One of the common examples of key generators would be the bitcoin protocol in which SHA-256 and Secp256k1 algorithms used to ensure that funds can only be spent or moved by their rightful owners. Significance In the past, people needed to secure their treasures or physical objects, so they implemented locks and generated unique keys for the owner. Today, we secure our homes with traditional locks, digital passwords, and fingerprints in order to keep the unwanted outside of our privacy. With the rise of internet, global data usage, and threats to our privacy, we started utilizing mathematical algorithms, encryption methods, automation and randomness for the same goal: generate unique keys to secure data. As the rate of global data transfer increases, key generators are partially but virally responsible for the security and privacy of its users. Without an efficient and meaningful sense of pseudo-randomness a key generator could harm the system or a targeted entity(If we consider the lock at a door as the public key, where most people can easily access to, and the key that unlocks the lock as the private key for the owner, we could argue that the company that generates the locks initially have a detailed knowledge of both keys or that someone else could generate more of the same private key. Thus, the practical way would be to enable the user to generate the private key without the knowledge of another party. References Key management