Ứng dụng web cho phép truyền file an toàn với chữ ký số RSA, đảm bảo tính toàn vẹn và xác thực nguồn gốc file.
- 🔑 Chữ ký số RSA 2048-bit: Mỗi file được ký bằng private key của người gửi
- 🌐 Real-time với Socket.IO: Thông báo trực tiếp khi có file mới
- 👥 Quản lý người dùng: Đăng ký/đăng nhập, hiển thị người online
- 📋 Lịch sử chi tiết: Theo dõi file đã gửi/nhận, admin xem tất cả
- 🔐 Xác thực khóa: Người gửi và nhận đều phải xác thực bằng khóa cá nhân
- 📱 Giao diện responsive: Thiết kế đẹp mắt, tương thích mobile
- 🛡️ Bảo mật cao: Không sử dụng database, chỉ lưu trữ JSON local
- Tạo khóa: Mỗi user có cặp khóa RSA (private + public)
- Ký file: Người gửi dùng private key của mình để ký file
- Xác minh: Người nhận dùng public key của người gửi để xác minh chữ ký
- Đảm bảo: Chỉ người có private key mới tạo được chữ ký hợp lệ
``` Người gửi: File + Private Key → Chữ ký số Người nhận: File + Chữ ký + Public Key người gửi → Xác minh ```
- Python 3.8+
- pip
```bash git clone https://github.com/yourusername/file-transfer-rsa.git cd file-transfer-rsa ```
```bash pip install -r requirements.txt ```
```bash python app.py ```
Mở trình duyệt và truy cập: http://localhost:5000
- Truy cập
/register - Nhập tên đăng nhập, mật khẩu và khóa cá nhân
- Khóa cá nhân sẽ không thể thay đổi sau khi tạo
- Hệ thống tự động tạo cặp khóa RSA cho bạn
- Sử dụng tên đăng nhập và mật khẩu đã tạo
- Sau khi đăng nhập, bạn sẽ xuất hiện trong danh sách "online"
- Vào trang "Gửi file"
- Chọn file cần gửi
- Chọn người nhận (không cần người đó online)
- Nhập khóa cá nhân để xác thực
- File sẽ được ký bằng private key của bạn
- Khi có file mới, bạn sẽ nhận thông báo real-time
- Vào Dashboard để xem file đã nhận
- Click "Xác minh" và nhập khóa cá nhân của bạn
- Hệ thống sử dụng public key của người gửi để xác minh chữ ký
- Nếu hợp lệ, bạn có thể tải file về
- User thường: Xem file đã gửi/nhận của mình
- Admin: Xem tất cả file trong hệ thống
Tài khoản đầu tiên có username admin sẽ tự động có quyền quản trị:
- Xem tất cả file trong hệ thống
- Truy cập bảng điều khiển admin
- Tải xuống bất kỳ file nào
``` DuAn7/ ├── app.py # Server chính Flask + SocketIO ├── requirements.txt # Dependencies Python ├── README.md # Tài liệu hướng dẫn ├── static/ │ ├── css/ │ │ └── style.css # CSS responsive, đẹp mắt │ ├── js/ │ │ └── main.js # JavaScript tương tác │ └── uploads/ # Thư mục lưu file upload ├── templates/ │ ├── index.html # Trang đăng nhập │ ├── register.html # Trang đăng ký │ ├── dashboard.html # Dashboard chính │ ├── admin.html # Bảng điều khiển admin │ ├── history.html # Lịch sử truyền file │ └── upload.html # Trang gửi file └── data/ ├── users.json # Thông tin người dùng ├── files.json # Thông tin file └── keys/ # Thư mục lưu khóa RSA ```
POST /api/register- Đăng ký tài khoản mớiPOST /api/login- Đăng nhậpGET /logout- Đăng xuất
POST /api/upload- Upload và ký filePOST /api/verify- Xác minh chữ ký fileGET /api/download/<file_id>- Tải file về
GET /- Trang đăng nhậpGET /register- Trang đăng kýGET /dashboard- Dashboard chínhGET /upload- Trang gửi fileGET /history- Lịch sử fileGET /admin- Bảng điều khiển admin (chỉ admin)
- RSA 2048-bit: Độ bảo mật cao
- SHA-256: Hash algorithm an toàn
- PSS Padding: Padding scheme bảo mật
- Session-based: Quản lý phiên đăng nhập
- Password hashing: SHA-256 cho mật khẩu
- Key verification: Xác thực khóa cá nhân
- No SQL Database: Chỉ sử dụng JSON files
- Local storage: Dữ liệu lưu trên server
- File isolation: Mỗi file có ID riêng
connect- Kết nối WebSocketdisconnect- Ngắt kết nối
user_online- Thông báo user onlineuser_offline- Thông báo user offlineonline_users- Danh sách user onlinenew_file- Thông báo file mới
- Modern UI: Gradient backgrounds, rounded corners
- Responsive: Tương thích desktop, tablet, mobile
- Animations: Smooth transitions và hover effects
- Dark/Light: Tối ưu cho cả hai chế độ
- Dashboard: Tổng quan hệ thống
- File Cards: Hiển thị file đẹp mắt
- Modal: Popup xác minh file
- Notifications: Thông báo real-time
- Tables: Bảng lịch sử responsive
```bash python app.py
Truy cập: http://localhost:5000
```
```bash pip install gunicorn gunicorn --worker-class eventlet -w 1 app:app ```
```dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 5000 CMD ["python", "app.py"] ```
- Fork repository
- Tạo feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Tạo Pull Request
Distributed under the MIT License. See LICENSE for more information.
- Author: Your Name
- Email: [email protected]
- Project Link: https://github.com/yourusername/file-transfer-rsa
- Flask - Web framework
- Socket.IO - Real-time communication
- Cryptography - RSA implementation
- Bootstrap Icons - Icon inspiration