Đây là hệ thống truyền file có ký số sử dụng giao thức TCP socket, gồm 3 thành phần:
- Server TCP trung gian: Chuyển tiếp file và chữ ký giữa người gửi và người nhận.
- Client Upload & Ký số: Giao diện web cho phép upload file, ký số bằng private key, gửi file + chữ ký qua server.
- Client Verify (Xác minh): Giao diện web cho phép nhận file, xác minh chữ ký bằng public key của người gửi.
├── client_upload_sign.py # Flask app phía gửi/ký số
├── client_verify.py # Flask app phía nhận/xác minh
├── tcp_server.py # Server TCP trung gian
├── rsa_manager.py # Quản lý RSA, ký số, xác minh
├── templates/ # Giao diện HTML (Bootstrap)
│ ├── upload_sign.html
│ └── verify_signature.html
├── uploads/ # Nơi lưu file nhận/gửi
├── keys/ # Nơi lưu cặp khóa của người gửi
├── requirements.txt # Thư viện Python cần thiết
- Tạo môi trường ảo (tuỳ chọn):
python -m venv venv source venv/bin/activate # hoặc venv\Scripts\activate trên Windows
- Cài đặt thư viện:
pip install -r requirements.txt
python tcp_server.pypython client_upload_sign.pyTruy cập http://localhost:8001
python client_verify.pyTruy cập http://localhost:8002
- Người gửi:
- Vào trang upload, chọn file, nhập private key (hoặc để hệ thống tự sinh), nhấn "Upload & Ký số".
- Có thể tải xuống/copy public key để gửi cho người nhận.
- Người nhận:
- Khi nhận file và chữ ký, vào trang xác minh, chọn file, dán chữ ký và public key (hoặc hệ thống tự điền nếu đã nhận được).
- Nhấn "Xác minh chữ ký" để kiểm tra tính hợp lệ.
- Private key: Luôn giữ bí mật, không chia sẻ.
- Public key: Chia sẻ cho người nhận để xác minh chữ ký.
- Hệ thống sẽ tự động sinh cặp khóa nếu chưa có.
- Sử dụng Flask, cryptography, Bootstrap.
- Tác giả: #Hwungg🥀

