A polyalphabetic cipher that uses Hasse's algorithm with a huge number to substitute characters from a randomly mixed charset. See paper for more details on how it works.
I do not provide any warranty that this cipher is in any way reliable.DO NOT USE WITH CRITICAL DATA !
No research was made on it so far. Your welcome to contribute in any way !
These parts have been moved to the unofficial paper. See pdf document in the repo.
In challenge/challenge.py, you will find a message encrypted with an unknown key. If you manage to find the original message, it would be a pleasure to know how you did it ! See the contact section.
Please note however that the project changed since. See challenge/params-challenge.py and challenge/collatzcipher-v1.0.py for more details.
To get a local copy up and running follow these simple example steps.
python3 (should come with your favorite distro)
sudo apt update && sudo apt install python3
-
Clone the repo
git clone https://github.com/lcram33/collatz-cipher.git
-
cd into the created folder
cd collatz-cipher
-
Test that everything works as expected (and you meet all depedencies)
./test.py && cd test_samples/ && ./test_all.sh && cd ..
-
See the help of the command line tool
./main.py --help
The program is to be runned as follow :
./main.py <command> <required args> <optional args>
Use :
./main.py <command> --help
to get the arguments and a description of what a command does.
Commands:
- list
- gen
- seededkey
- enc
- dec
- encf
- decf
- export
- import
- delete
- check
- seeded_key.py allows to create keys using a random passphrase, allowing an easier key sharing and key recovery.
- secure_pwd_gen_api.py comes from one of my other projects. It can be used to generate passwords and passphrases for cryptographic use.
- test_randomness.py is to test how "randomly" are the shiftings distributed.
- unicode_list.py was used to produce the latest params.py file.
- Encryption of messages through command line
- Data integrity check
- Strong password hashing (using bcrypt for CPU cost)
- Finally a command line !
- Added null char to the charset, meaning it is now encrypted. To avoid any problem in decryption, it is removed from the initial message before encryption.
- Randomized "confusing threshold" (prevalence of useless chars).
- Randomized noise at the begining and the end of the message.
- First version of paper.
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the GPL-3.0 license. See LICENSE
for more information.
Project Link: https://github.com/lcram33/collatz-cipher
Caesar cipher icons created by Pixelmeetup - Flaticon
Warning icons created by Freepik - Flaticon
Safe icons created by Assia Benkerroum - Flaticon
Technology icons created by Smashicons - Flaticon
Idea icons created by Good Ware - Flaticon