flavienbwk / flbw

Dynamic & lightweight C++ encryption algorithm using a password or not, changing the encrypted string each time it is submitted even if the original string hasn't changed.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

What is FLBW ?

FLBW is a dynamic and lightweight C++ encryption algorithm allowing you to encrypt a string with or without a password.

This algorithm generates a different string each time the same plain string is submitted, even with the same password.
It also provides a customisable difficulty bruteforce protection.

Current version : (cpp) 0.7.1

Installation

Classic install for permanent usage :

sudo make install
flbw # ... (see usage below)

ℹ️ You can uninstall with sudo make uninstall.

Classic install for temporary usage :

make
./flbw # ... (see usage below)

Usage

You have two ways of using the FLBW algorithm :

  • Encrypt or decrypt a string.
  • Encrypt or decrypt a file.
> For encryption :
flbw enc[bp 250000] password string # Add "bp" if you want to enable "bruteforce protection".
flbw encf[bp 250000] password file.txt [encrypted_destination.txt] # Last parameter is optional, the result will be printed if not specified.
flbw encbyf[bp 250000] passwordfile.txt file.txt [encrypted_destination.txt] # Last parameter is optional, the result will be printed if not specified.

> For decryption :
flbw dec[bp 250000] password encryptedstring
flbw decf[bp 250000] password encryptedfile.txt [decrypted_destination.txt] # Last parameter is optional, the result will be printed if not specified.
flbw decbyf[bp 250000] passwordfile.txt encryptedfile.txt [decrypted_destination.txt] # Last parameter is optional, the result will be printed if not specified.

The [bp 250000] sequence is optional. It is used to enable bruteforce protection to a difficulty of 250000.
You can modify it at your will, 250000 is just a reference.

Bruteforce protection

⚠️ Enabling bruteforce protection greatly increases the security of your encryption but also greatly increases the encryption/decryption time.

⚠️ The version 0.6 of FLBW introduces the possibility to encrypt with bruteforce protection for decryption. While it's working, it's not a long-term solution. It will be reviewed in the next releases.

Tests

Instructions for tests are in the tests directory.

Encryption mechanism

See the following schematics to understand how FLBW roughly work.

About

Dynamic & lightweight C++ encryption algorithm using a password or not, changing the encrypted string each time it is submitted even if the original string hasn't changed.

License:Other


Languages

Language:C++ 96.6%Language:Makefile 2.9%Language:C 0.4%Language:Perl 0.0%