Fencryption (binary)
I first built this program with typescript (see fencryption-typescript) but I switched to Rust because typescript was not the most suitable language for this kind of project and also because I wanted to try Rust and low-level programming.
Fencryption is program to encrypt and decrypt files and full directories. Note that this project is at an early stage of development.
THERE IS ABSOLUTELY NO WARRANTY THAT THIS PROGRAM DOES NOT CONTAIN VULNERABILITIES. USE IT AT YOUR OWN RISK.
This program is not supposed to be used in "real conditions" because it is a mere personal project. Although I think above v1.0 the commands encrypt and decrypt should be pretty safe.
Preview
fencryption --help
A program to encrypt/decrypt text, files and directories
Usage: fencryption [OPTIONS] <COMMAND>
Commands:
encrypt Encrypt text or files and directories
decrypt Decrypt text or files and directories
help Print this message or the help of the given subcommand(s)
Options:
-D, --debug Enable debug log
-h, --help Print help
-V, --version Print version
Limitations/Issues
- Pack files can get pretty huge therefore it is possible that they exceed the maximum file size of some file systems (for example the maximum file size of fat32 is 4GB).
- When encrypting files, make sure to encrypt and decrypt them with the same version of fencryption (it is very likely that different versions will not work the same way)
Roadmap
- Provide better help about commands
- Add default file encryption features
- Add stream enc-/decryption features
- Setup directory recursive mapping
- Improve log, error handling and cli
- Implement multithreading
- Edit encryption process so the output file is smaller
- Add commands to enc/decrypt text/base64
- Add packing related commands
- Come up with a stable version (v1.0)
Tests commands should pass
- encrypt and decrypt
- encrypt/decrypt
- can encrypt/decrypt several items at once
- can set to a custom output path
- only when there is one input path
- overwrite when asked
- delete original when asked
- print debug log when asked
Ideas
things that could be added in the future
- Packing: makes a file with all the files packed inside (a pack) that is then encrypted
- Command
pack createcreates a pack from the contents of specified directory - Command
pack updatecreates a directory where decrypted files (from the encrypted "pack") appear, you can then choose to update the pack with the changes made in the directory or to discard them - Command
pack extractextracts pack to the specified directory
- Command
fencryption-lib
The lib used in the fencryption binary. You can take a look, it has some interesting things...