A secure electronic voting system built with Python and Streamlit that simulates a complete cryptographic voting protocol using RSA encryption, blind signatures, vote anonymization, and secure vote counting.
👉 https://crypto-voting-20-26-f.streamlit.app/
👉 https://github.com/jazia-abdelkrim/crypto_voting
This project simulates a secure electronic voting process inspired by real-world cryptographic voting systems.
The system guarantees:
- Only authorized voters can vote
- Votes remain confidential
- Voter anonymity is preserved
- Double voting is prevented
- Ballots are digitally signed
| Component | Role |
|---|---|
| Commissioner | Generates voter credentials |
| Admin Server | Verifies voter rights and signs ballots |
| Anonymizer Server | Removes voter identity traces |
| Counter | Decrypts and counts votes |
Used for:
- Vote encryption
- Digital signatures
- Secure communication
Allows the Admin to sign ballots without seeing the actual vote content, preserving voter privacy.
Used to securely verify voter codes without exposing sensitive information.
- Secure voter authentication
- Encrypted ballots
- Blind signature implementation
- Anonymous vote submission
- Secure vote tallying
- Double-vote prevention
- Interactive Streamlit interface
crypto_voting/
│
├── app.py
├── main.py
├── admin.py
├── anonymiseur.py
├── commissioner.py
├── decompte.py
├── tth_hash.py
├── requirements.txt
└── README.mdClone the repository:
git clone https://github.com/jazia-abdelkrim/crypto_voting.git
cd crypto_votingCreate a virtual environment (recommended):
python3 -m venv .venv
source .venv/bin/activateInstall dependencies:
pip install -r requirements.txtstreamlit run app.pyor:
python3 -m streamlit run app.py- Commissioner generates voter codes
- Admin verifies voter identity
- Voter blinds the ballot
- Admin signs the blinded ballot
- Vote is encrypted
- Anonymizer removes identity traces
- Counter decrypts and counts votes
- Final results are displayed
The system prevents a voter from voting multiple times by invalidating used voter credentials after submission.
- Python 3
- Streamlit
- RSA Cryptography
- Hash Functions
- Object-Oriented Programming
This project was developed for educational purposes to demonstrate:
- Electronic voting systems
- Applied cryptography
- RSA encryption
- Blind signatures
- Secure authentication protocols
This project is intended for academic and educational use.