A secure electronic voting system implemented using Django and Paillier Homomorphic Encryption. This system allows for secure vote casting and counting while maintaining voter privacy through advanced cryptographic techniques.
- Secure voter registration and authentication
- End-to-end encrypted voting process
- Homomorphic vote tallying (count votes without decrypting individual ballots)
- Vote verification system
- Admin dashboard for election management
- Python 3.x
- Django 4.2
- Paillier Homomorphic Encryption (lightphe 0.0.8)
- SQLite (default Django database)
- Python 3.x installed
- Basic understanding of command line operations
- pip (Python package manager)
- Clone the repository
git clone <repository-url>
cd <repository-name>
- Create and activate a virtual environment
python -m venv venv
venv\Scripts\activate
python3 -m venv venv
source venv/bin/activate
- Install the required dependencies
pip install -r requirements.txt
- Run database migrations
python manage.py migrate
- Run the development server
python manage.py runserver
- Access the application at http://127.0.0.1:8000/ or http://localhost:8000/
electronic-voting-machine/ ├── app/ │ ├── management/ │ ├── migrations/ │ ├── static/ │ ├── templates/ │ ├── admin.py # Admin configuration │ ├── apps.py # Application configuration │ ├── encryption.py # Homomorphic encryption implementation │ ├── models.py # Database models │ ├── tests.py # Test cases │ ├── views.py # View controllers ├── project/ │ ├── asgi.py # ASGI configuration │ ├── settings.py # Project settings │ ├── urls.py # URL configuration │ └── wsgi.py # WSGI configuration ├── uploads/ ├── manage.py ├── ReadMe.md └── requirements.txt
This electronic voting system uses Paillier Homomorphic Encryption to ensure:
- Vote Privacy: Individual votes are encrypted and cannot be traced back to voters
- Vote Integrity: Votes cannot be altered once cast
- Verifiable Counting: Vote tallying can be verified without compromising privacy
The Paillier cryptosystem allows for mathematical operations on encrypted values, enabling vote counting without decrypting individual votes.
- Homomorphic encryption for vote privacy
- Secure user authentication
- Encrypted data transmission
- Protection against double voting
- Audit trail for verification
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is open-sourced under the MIT License - see the LICENSE file for details.
For any questions or feedback, please contact us at [email protected].
v0.0.1
- Initial release
- Basic E2EVV implementation