Onetimebluh (Workbluhp in blogress!!) ====================================== Simple implementation of One Time Pad cipher. Capable of generating cryptographically strong random number keys and of usign them to encrypt/decrypt messages of same length with a bitwise XOR function. Build ------- Still usign just gcc. Compile only for testing. Openssl libraries are needed and must be linked to gcc with the option `-lcrypto`. Here follows an example: ``` gcc -Wall -Wpedantic -lcrypto onetimebluh.c -o otbluh -v ``` Usage ------- Example creates two keys of length 4096 bytes and use the first as a message and the second as the pad key (just for testing): ``` otbluh --key-gen --nbytes 4096 --output message otbluh --key-gen --nbytes 4096 --output pad otbluh --encrypt message --key-file pad --output encrypted-message otbluh --decrypt encrypted-message --key-file pad --outptut decrypted-message ``` Is recommended to use the `-t` option in order to be sure not to use more than once the same pieces of the pad to encrypt your data. Here follows an other example: ``` otbluh --encrypt message --key-file pad --output encrypted-message --tear-page ``` Or using the short options: ``` otbluh -te message -k pad -o encrypted-message ``` If you want you can use the `--bluh` function to get the binary dump of yuor encrypted message: ``` otbluh --bluh message --output bluhed-message ``` You can print the help by running `onetimebluh --help` or `onetimebluh -h`. ``` ONETIMEBLUH USAGE: otbluh [COMMAND] [OPTIONS] COMMANDS: -b, --bluh bluhes your message or in other words performs a bynary dump -d, --decrypt=FILE decrypt message (input) same ad --encrypt, just for the feeling -e, --encrypt=FILE encrypt message (input) -g, --gen-key create key file -h, --help print this help -u, --unbluh unbluhes your message (gets the orginal message from the binary dump) OPTIONS -k, --key-file=KEY_FILE use key (input) -n, --nbytes=NUM number of bytes -o, --output=FILE output name -t, --tear-page deletes from the pad file the bytes used to encrypt/decrypt Onetimebluh project repository at https://git.eigenlab.org/seppia/onetimebluh ```