A bruteforce protected aproach for encryption using plain text ASCII passwords.
What is it about?
Normal encryption of plain text passwords can theoretically be cracked because decryption attempts with a failure password will result in non-ASCII data.
LibRincewind combines any symmetrical algorithm with a rotational algorithm so that false tries can't be distinguished from valid ones.
The trick is how the ASCII code is being rotated.
Updates
17.04.2025
-The encryption of the rotated data has been removed
-Updated the demo
WIP
A password manager using LibRincewind is currently being developed.
How does it work?
1.) The text is rotated using a random key for each character until it is valid ASCII
2.) The key gets encrypted with a password using a base algorithm.
Caveats:
-The length of the plain text can be guessed, because it equals the length of the encryption/decryption key
-The algorithm is still prone to wordlist attacks
-The Rotation is using normal bitshifts, no circular shifting. thus there is some statistical imablance, which could make it possible to guess which symbols could be correct.
It also limits the key to 6 symbols per byte.
so when encrypting an 8 letter password, it will result in
6^8 = 1.679.616
false positives which can't be distinguished from the real password, while requiring the same computation power for an attack.
Usage:
Encryption of passwords using a main password (password managers):
CRincewind rw=new CRincewind("pluginlibrary.dll", 512);
String enc=rw.encryptString("data","password1","password2");
String dec=rw.decryptString(enc,"password1","password2");
Creating custom plugins:
Implement the interface found in LibRincewindPlugin.
ToDo:
IV's for each character
Update v1.1:
-Added demo sourcecode
-Added password authentication
Contact E-Mail: decipher2k20@gmail.com