Naevia is a platform demonstrating the usage of the Hill Climbing optimization technique (only for local optima solutions) and N-grams frequency for cryptanalysis. Its functionalities, which are available through a web interface, are:
- encryption with classic ciphers:
- Caesar;
- Vigenere;
- substitution;
- decryption via:
- brute-force;
- Hill Climbing.
To improve the convergence to the solution (the real plaintext), the following preliminary steps can be done:
- running the decryption multiple time (it starts at each run from a different random value, maybe God will have mercy on you once);
- increase ciphertext size (if possible); and
- shorten key length (if possible).
Limitations of the current version of the platform are some fixed parameters:
- the N-grams length (
4
); - the number of keys generated into the brute-force process (
3500
); and - the length of the Vigenere key that is brute-forced (
12
).
- Encryption with the substitution cipher. Decryption via brute-foce
- Encryption with the Caesar cipher. Decryption via Hill Climbing
- Encryption with the Vigenere cipher. Decryption via Hill Climbing
- Encryption with the substitution cipher. Decryption via Hill Climbing
cd backend
pip3 install -r requirements.txt
python3 server.py
- set up and run the user interface
cd user-interface
npm install
npm start
- React
- React Bootstrap
- axios
- Victory
- React Icons
- logo from Icons8
- background animation from CodePen
- solving the above mentioned limitations
- more parameter tuning