A secure, real-time chat application designed to ensure privacy through robust end-to-end encryption, leveraging the power of Qt framework for cross-platform GUI development. OpenSSL is integrated to handle secure communication protocols & cryptographic operations. The application supports instant messaging with a focus on user data protection & seamless performance. Its architecture is built to resist eavesdropping, ensuring confidentiality across all transmitted messages.
- Secure Communication: AES-128-CBC encryption for all messages
- Multi-Client Support: Server handles multiple concurrent connections
- Persistent Chat History: New clients receive previous messages
- Custom Thread Handling: Dedicated threads for each client connection
- Modern GUI: Clean interface with connection status indicators
- Cross-Platform: Built with Qt for Windows/Linux/macOS compatibility
- Qt5 Library ( Version >= 5.15)
- OpenSSL development libraries
git clone https://github.com/TheLeopard65/Photon-Live-Chat-App.git
cd Photon-Live-Chat-App
./install.shStart Server:
./ServerStart Client:
./ClientClient Configuration:
- Enter server IP address
- Choose a nickname
- Click
CONNECT - Start secure chatting!
- AES-128-CBC encryption with PKCS#7 padding
- Random IV generation for each message
- Secure key derivation (hardcoded demo key)
Security Note: This implementation uses a hardcoded key for demonstration purposes. For production use:
- Implement proper key exchange protocol
- Use environment variables for key storage
- Consider using TLS for transport security
.
├── Client
│ ├── ChatRoom-client.pro
│ ├── clienttcpsocket.cpp
│ ├── clienttcpsocket.h
│ ├── main.cpp
│ ├── mainwindow.cpp
│ ├── mainwindow.h
│ ├── mainwindow.ui
│ └── Makefile
├── Install.sh
├── LICENSE
├── Makefile
├── Photon-Compiler.pro
├── README.md
├── Requirements.txt
└── Server
├── ChatRoom-server.pro
├── chatserver.cpp
├── chatserver.h
├── clienthandlerthread.cpp
├── clienthandlerthread.h
├── customtcpsocket.cpp
├── customtcpsocket.h
├── main.cpp
└── Makefile
3 directories, 23 files
- Network Protocol: Custom TCP-based protocol
- Message Format:
struct { QByteArray iv; QByteArray ciphertext; } encrypted_message; - Thread Management: Dedicated QThread per client connection
- Dependencies:
- QtCore
- QtNetwork
- QtWidgets (Client)
- OpenSSL Crypto Library
- Default Port:
7986
We welcome contributions! Please follow these steps:
- Fork the repository
- Create your feature branch (
git checkout -b feature/awesome) - Commit your changes (
git commit -am 'Add awesome feature') - Push to the branch (
git push origin feature/awesome) - Open a Pull Request
Distributed under MIT License. See LICENSE for more information.