TO DO:
- allow bcrypt and/or scrypt in the gen_key() function
- finish async encryption methods
- helper functions to display defaults
- upgrade_kdf
- change either kdf.scrypt and kdf.bcrypt to output an encoded string, or kdf.pbkdf2 to output a buffer
TO DO: