One Time Pad is an encryption technique in which each character of a message is combined with a character from a random key stream. Many OTP generators exist online, but they use pseudo random number generators in order to create the random key stream. To add to the security of generating a OTP, this project uses Chainlink VRF which allows the user to verify the randomness used in creating the OTP.
Phase I - Creating the OTP
1. User requests OTPs based on how long they want the pads to be and how many they want.
2. A VRF call is made requesting a random number which will then be use to create one-time pads (OTPs)
3. (Optional) Encrypt a user provided message using the OTPs
4. Transfer encrypted message to the other party
Try it out here! (Note that you must first connect to your MetaMask and refresh the page in order to view the front end)
Incomplete
- Replace random number generator for OTPs with VRF call
- Show VRF number on frontend to the user in case they would like to use it as a public key, using a shared private key that they would create to encrypt messages using the verifiably created public key.
- Allow a text box for the user to encrypt/decrypt messages based on the pads created.

Log in or sign up for Devpost to join the conversation.