yaycl-crypt had some py2-only imports in it that have been corrected. Additionally, it was abusing the py2 string-as-bytes behavior, which py3 did not like. The solution was to explicitly handle bytes as bytes for the purposes of encryption and decryption. When the crypt key comes from user input, like an env-var or python string, it's assumed to be utf-8 and converted to bytes. If it comes from a file, the file's bytes are read.