Cryptography Design
TODO: Make it comprehensible and easier!