A Java-based client-server messaging system with end-to-end encryption, using AES, RSA, and the Double Ratchet algorithm. Backed by a MariaDB SQL database.
- Install MariaDB.
- Run the SQL scripts:
mysql -u your_username -p < src/CreateDataBase.sql
mysql -u your_username -p your_database_name < src/CreateTables.sql
Configure your credentials inside:
src/org/DataBase/DBConnect.java
cd src
javac org/Server/*.java org/Packets/*.java org/Keys/*.java org/DataBase/*.java
java org.Server.Main
cd src
javac org/Client/*.java org/Packets/*.java org/Keys/*.java
java org.Client.Main
-
🔐 End-to-end encryption with Double Ratchet
-
💬 Direct & secure messaging
-
🧾 Registration, login, key exchange
-
🗄️ MariaDB-based user/key storage
src/
├── CreateDataBase.sql
├── CreateTables.sql
└── org/
├── Client/
│ ├── Main.java
│ └── DoubleRatchetState.java
├── Packets/
│ ├── AESAnswer.java
│ ├── AESFinal.java
│ ├── AESRequest.java
│ ├── BundleRequestPacket.java
│ ├── DirectMessagePacket.java
│ ├── HandShake2Packet.java
│ ├── HandShakeAlreadyMade.java
│ ├── HandShakePacket.java
│ ├── InfoPacket.java
│ ├── KeyBundle.java
│ ├── LoginPacket.java
│ ├── MadeHand.java
│ ├── MessagePacket.java
│ ├── Packet.java
│ ├── PacketUtils.java
│ ├── PublicKeyPacket.java
│ ├── RegisterPacket.java
│ ├── UserListPacket.java
│ ├── UserListRequestPacket.java
│ ├── UserSelect.java
│ ├── oneTimeKeysPacket.java
├── Keys/
│ ├── RSAKeys.java
│ └── AESKeys.java
├── Server/
│ ├── Main.java
└── DataBase/
└ ├── DBConnect.java