The Cryptographer project is a Java-based application that provides a set of cryptographic functionalities (encryption, decryption, hacking).
The project currently features a sophisticated implementation of the Caesar cipher, a classic encryption technique. The Caesar cipher allows users to perform encryption, decryption, and exploration of hacking techniques within a user-friendly interface.
The Cryptographer project is built on the SOLID principles, ensuring a modular and extensible architecture. This design philosophy allows for straightforward integration of new types of ciphers. Whether you wish to add modern cryptographic algorithms or experiment with historical ciphers, the project's structure facilitates easy expansion.
In the Cryptographer project, we've intelligently incorporated key design patterns:
Facade Pattern: Simplifies complex cryptographic tasks, providing users with an easy-to-use interface while efficiently managing behind-the-scenes intricacies.
Abstract Factory Pattern: Streamlines the creation of related command sets, ensuring a consistent approach to cryptographic components. This promotes flexibility and upholds SOLID principles.
Command Pattern: Packages cryptographic operations into distinct objects, allowing users to customize requests for enhanced flexibility and user-friendliness.
Strategy Pattern: Enables users to dynamically choose between encryption, decryption, or hacking strategies. This design promotes adaptability without requiring modifications to existing code.
To showcase the Cryptographer project in action, we've provided a series of usage examples with detailed explanations.
Configuration Setup:
Created a configuration named ENCRYPT. Set default arguments, including the command, file path, and encryption key.
Console Execution (NoArgsRun):
In the run() method of the Runner class, set RunOperation as NoArgsRun to demonstrate program execution in the console. Result: Created text.txt[ENCRYPTED] after encryption.
Console Execution (NoArgsRun - DECRYPT):
Tested the DECRYPT command to decrypt the previously encrypted file. Result: Successfully decrypted text.txt[DECRYPTED].
Console Execution (NoArgsRun - HACK):
Tested the HACK command to demonstrate the program's hacking capabilities. Result: Executed the hacking operation successfully.
Terminal Execution (Command-Line Arguments):
Packaged the project into a JAR file. Executed the program in the terminal using the command java -jar jar-fileName command filepath key. Result: Demonstrated the program's functionality with terminal arguments.
Console Execution (HACK - No Key):
Showcased the program's ability to hack a file without requiring a key. Result: Successfully hacked the file.
Console Execution (Encryption and Hacking):
Demonstrated the encryption and subsequent hacking of the text.txt file. Result: Showcased the full encryption and hacking workflow.






