JSChat is a fully encrypted terminal-based chat application built in Java. It provides secure communication between clients using AES and RSA encryption. The project consists of a server and a client, both of which must be running for communication to occur.
- End-to-End Encryption: Uses AES for message encryption and RSA for key exchange.
- Terminal-Based: Simple command-line interface for ease of use.
- Multi-Client Support: The server can handle multiple clients at once.
- Automatic Key Exchange: Clients and the server securely exchange encryption keys at connection.
- Java 11 or later
- Clone or extract the project.
- Navigate to the project directory.
- Start the server.
- Start as many clients as necessary.
Run the server using:
./gradlew runServer -q --console plain
Run the client using:
./gradlew runClient -q --console plain
jacksovern/
├── Client/
│ ├── Client.java
│ ├── AES.java
│ ├── RSA.java
│ └── ChatUtils.java
├── Server/
│ ├── Server.java
│ ├── ServerClient.java
│ └── Message.java
Server/
: Contains server-side logic.Client/
: Contains client-side logic.
- AES Encryption: Encrypts messages before transmission.
- RSA Encryption: Handles secure key exchange between clients and server.
- Message Integrity: Ensures that messages cannot be tampered with during transmission.
This project is licensed under the MIT License.
Developed by Jack Sovern.