- Project Overview
- Technologies Used
- System Features
- Installation and Setup
- Usage Instructions
- Database Structure
- File Structure
- Future Improvements
The Crypto Painting Competition is a secure digital art competition platform where contestants submit encrypted paintings, a jury evaluates them using blind signatures, and the competition president verifies and announces the winners. This system ensures fair evaluation, cryptographic integrity, and security of submitted artworks.
- Programming Language: Java (JDK 22)
- Graphical User Interface: JavaFX
- Cryptographic Libraries: Bouncy Castle
- Database Management: MySQL
- Security Mechanisms:
- RSA for encryption and blind signatures
- AES-GCM for artwork encryption
- ECDSA for digital signatures
- User Roles:
- Contestants: Encrypt and submit digital paintings.
- Judges: Evaluate and rate the paintings using blind signatures.
- President: Verifies the jury's evaluation and announces winners.
- Secure Artwork Submission: Paintings are encrypted before submission.
- Blind Signature-Based Voting: Judges evaluate paintings without revealing their identity to the president.
- Winner Selection: The president selects the top three winners based on verified evaluations.
- Login System: Users authenticate based on their assigned roles.
- Java 22 SDK installed.
- MySQL Database setup.
- Bouncy Castle JAR file in the
lib/
directory.
- Clone the repository:
git clone https://github.com/your-repo/Crypto-Painting-Competition.git
- Add Bouncy Castle to the
lib/
directory. - Configure the database connection in
DatabaseManager.java
. - Compile and run the project:
javac -cp lib/bcprov-jdk15on.jar:. src/*.java java -cp lib/bcprov-jdk15on.jar:. src.LoginScreen
- Login as a Contestant, Judge, or President.
- Contestants generate key pairs, encrypt and upload their artwork.
- Judges evaluate paintings and submit blind-signed ratings.
- The President verifies ratings and selects winners.
- The system announces the top three winners based on total scores.
The database consists of the following key tables:
- Users: Stores login credentials and roles.
- Paintings: Stores encrypted paintings and metadata.
- Evaluations: Stores jury ratings and blind signatures.
- VerifiedEvaluations: Tracks validated evaluations.
Crypto-Painting-Competition/
βββ src/
β βββ LoginScreen.java
β βββ DatabaseManager.java
β βββ ArtistWindow.java
β βββ JudgeWindow.java
β βββ PresidentWindow.java
β βββ BlindSignature.java
β βββ AESGC.java
β βββ RSA.java
β βββ ECDSA.java
β βββ StarRatingApp.java
βββ lib/ (Bouncy Castle JAR file)
βββ README.md
- Implement additional validation mechanisms for enhanced security.
- Improve the user interface with enhanced graphics and animations.
- Optimize database queries for better performance.