Technical Description & Role
As the **Main Developer**, I was responsible for researching the mathematical theory and implementing the encryption algorithms from scratch, rather than using built-in libraries.
The project was divided into two parts:
- Desktop Application (Java & JavaFX): Built a UI using JavaFX, allowing the user to:
- Automatically generate a Public/Private Key pair for RSA.
- Input plaintext and a Public Key to perform Encryption.
- Input ciphertext and a Private Key to perform Decryption.
- Simulate the detailed mathematical steps (like calculating $n$, $\phi(n)$, $e$, $d$).
- Research Script (Python):
- Implemented the **RSA** algorithm in Python to cross-validate the results from the Java version.
- Implemented the **ElGamal** algorithm, a cryptosystem based on the Discrete Logarithm problem, for comparison.
Through this project, I gained a deep understanding of the mathematical foundations of cryptography (Prime Numbers, Modulo Arithmetic, Euler's Theorem) and how to apply them in practical programming.