Welcome to the McEliece Cryptosystem project, an exploration of a post-quantum public-key cryptosystem based on error-correcting codes. This project demonstrates the McEliece scheme through small, concrete examples and is designed to provide both theoretical background and practical hands-on experience.
- Understand the McEliece scheme: Learn how the public-key cryptosystem works and why it remains secure even against quantum attacks.
- Explore Error-Correcting Codes: Study the principles behind Goppa codes and their use in secure encryption.
- Contrast with Classical Cryptosystems: Compare McEliece with RSA, ElGamal, and ECC.
- Hands-on Examples: Follow through two complete examples that cover key generation, encryption, and decryption.
McEliece_Project/
├── README.md
├── LICENSE
├── requirements.txt
├── Makefile
├── docs/
│ ├── project_overview.md
│ └── examples_explanation.md
├── src/
│ ├── __init__.py
│ ├── mceliece.py
│ ├── task1_example.py
│ └── task2_example.py
├── notebooks/
│ └── McEliece_Tutorial.ipynb
├── tests/
│ └── test_mceliece.py
└── data/
└── sample_messages.txt
-
Installation:
Install the necessary dependencies listed inrequirements.txt. If you're using SageMath, ensure it's properly configured.pip install -r requirements.txt
-
Running Examples:
- Task 1 Example:
Run the first example:python src/task1_example.py
- Task 2 Example:
Run the second example:python src/task2_example.py
- Task 1 Example:
-
Interactive Exploration:
Open thenotebooks/McEliece_Tutorial.ipynbin your Jupyter/SageMath environment to interactively explore the McEliece cryptosystem. -
Testing:
Execute the unit tests with:python -m unittest discover tests
- Documentation:
Detailed theory and step-by-step explanations are available in thedocsfolder. - License:
Review theLICENSEfile for information about the project’s terms.