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!

