Description

This project implements a secure file transfer system using AES encryption in Java. It leverages the concepts of Interfaces, Abstraction, and Inheritance for better code management, making the system modular and easily extensible.

Features

  • Secure File Transfer: Utilizes AES encryption to ensure the security of file transfers.
  • Modular Design: Implements Interfaces and Abstract classes to ensure a clean and manageable codebase.
  • Extensible: Designed with extensibility in mind, allowing for easy updates and addition of new features.

Requirements

  • Java Development Kit (JDK): JDK 8 or higher is required to run this project.
  • Integrated Development Environment (IDE): An IDE such as IntelliJ IDEA, Eclipse, or NetBeans is recommended for development, although not strictly necessary.
  • Understanding of Cryptography: Basic knowledge of symmetric encryption and key management is beneficial.

Setup and Installation

  1. Install JDK: Ensure that you have a compatible version of the JDK installed. You can download the latest version from Oracle's official website.

  2. Clone the Repository: Clone the project repository to your local machine using the following command:

    git clone Rohan-ingle/java_project
    
  3. Prepare Client and Server: Before running the application, ensure that the necessary files are in place:

    • On the Client Side: Place the FileSender.java, FileOperator.java, Encryptable.java, AESEncryptor.java and any files you wish to transfer in your client directory. Ensure the RandomKeyGenerator.java has been run at least once to generate the key.txt file.
    • On the Server Side: Ensure the FileReceiver.java, FileOperator.java, Encryptable.java, AESEncryptor.java is ready in your server directory. The key.txt file generated by the client should be copied here if the server is on a different machine.
  4. Open and Run:

    • Server: Open the project in your IDE, navigate to the FileReceiver.java, and run it to start the server.
    • Client: Run the FileSender.java class to start sending files to your server.

Usage

To use this project for file transfer:

  1. Generate Encryption Key: Run the RandomKeyGenerator class to generate a new encryption key.
  2. Start the File Receiver: Run the FileReceiver class on the receiving end.
  3. Send Files: Use the FileSender class to send files securely to the receiver.

Contributing

Contributions are welcome! For major changes, please open an issue first to discuss what you would like to change.