Updated: 241221 The chest program can be used to encrypt and decrypt files using a password hash hopping algorithm (SHA512 with fixed length or SHAKE256 with variable hash length). Note that the encrypted output may be vulnerable to hash database cracking due to its simplicity. Just give a filename as argument and it should detect, according to the presence of the .chest extension, whether to encrypt or decrypt. Neither the password or the hash are stored in the output file, the hash is generated at runtime after the user has been asked for a password. It is now possible to use a file as password. The hash will be computed with the content all at once, so use a file that can be entirely loaded into memory. Also, it's now possible to specify the extension used to detect the correct mode as a program option. DISCLAIMER There is no warranty that the encrypted output file is not crackable! Normally you shouldn't store critical data with this encryption. See the LICENSE file for full disclosure. BUGS The C version and the Go versions should give the same results, but differ from the encrypted output from the Python and Rust versions when used with a password file ending with a newline character. NOTES As a strategy you can rename the file to remove the .chest or specified extension and reencrypt again to reduce chances of bruteforce attacks, since there's not really a way to tell if the first pass gives correct results. Enjoy!