Hệ thống gửi file finance.txt chứa dữ liệu ngân hàng với nén dữ liệu và bảo mật đầy đủ.
- Mã hóa: AES-GCM 256-bit
- Trao khóa & ký số: RSA 1024-bit (PKCS#1 v1.5 + SHA-512)
- Kiểm tra tính toàn vẹn: SHA-512
- Nén dữ liệu: zlib để giảm kích thước
- Người gửi gửi "Hello!"
- Người nhận trả lời "Ready!"
- Người gửi ký metadata (tên file + timestamp + loại file) bằng RSA/SHA-512
- Người gửi mã hóa SessionKey bằng RSA 1024-bit (PKCS#1 v1.5) và gửi
- Nén file bằng zlib
- Tạo nonce ngẫu nhiên
- Mã hóa file nén bằng AES-GCM → tạo ciphertext và tag
- Tính hash: SHA-512(nonce || ciphertext || tag)
- Gói tin gửi:
{
"nonce": "<Base64>",
"cipher": "<Base64>",
"tag": "<Base64>",
"hash": "<hex>",
"sig": "<Signature>"
}- Kiểm tra hash, chữ ký, và tag
- Nếu hợp lệ: Giải mã → giải nén → lưu file → gửi ACK
- Nếu không hợp lệ: Từ chối → gửi NACK (lỗi integrity)
python install_deps.pypython run.pyhttp://localhost:5000
- Nhấn "Khởi Chạy Server" để bật WebSocket server tại
ws://localhost:8765
- Tạo file test: Nhấn "Tạo File Test" để tạo
finance.txtmẫu - Upload file: Chọn file từ máy tính (.txt, .csv, .json, .pdf)
- Nhấn "Gửi File An Toàn" để thực hiện toàn bộ quy trình mã hóa
- File được giải mã sẽ xuất hiện trong danh sách "File Đã Nhận"
- Có thể tải xuống để kiểm tra
my_web_project/
├── app/
│ ├── __init__.py # Flask app factory
│ ├── routes/
│ │ ├── __init__.py
│ │ └── main.py # Flask routes
│ ├── services/
│ │ ├── crypto_service.py # Dịch vụ mã hóa
│ │ ├── websocket_server.py # WebSocket server
│ │ └── websocket_client.py # WebSocket client
│ └── templates/
│ └── index.html # Giao diện web
├── uploads/ # File upload
├── received_files/ # File đã nhận
├── test_files/ # File test
├── config.py # Cấu hình Flask
├── requirements.txt # Dependencies
├── install_deps.py # Script cài đặt
├── run.py # Entry point
└── README.md # File này
CryptoService: Các hàm mã hóa cơ bản (AES, RSA, SHA-512)SecureFileTransfer: Logic truyền file an toàn theo đề tài 4
SecureFileServer: WebSocket server xử lý nhận file- Xử lý handshake, trao khóa, nhận file đã mã hóa
SecureFileClient: WebSocket client gửi file- Thực hiện đầy đủ quy trình gửi file an toàn
Hệ thống tự động tạo file finance.txt mẫu với nội dung:
- Thông tin tài khoản ngân hàng
- Số dư và giao dịch
- Dữ liệu nhạy cảm cần bảo mật
- WebSocket Server: Chạy trên cổng 8765
- Flask Web: Chạy trên cổng 5000
- RSA Key Size: 1024-bit (theo yêu cầu đề tài)
- AES Mode: GCM với 256-bit key
- Hash Algorithm: SHA-512
- Compression: zlib level mặc định
pip uninstall crypto pycrypto
pip install pycryptodome- Kiểm tra port 8765 có bị chiếm không
- Restart server nếu cần
- Kiểm tra server đã khởi chạy chưa
- Kiểm tra đường dẫn file có đúng không
Hệ thống được xây dựng theo đề tài 4 - Gửi báo cáo tài chính có nén dữ liệu với đầy đủ tính năng bảo mật theo yêu cầu.
python -m venv venvsource venv/bin/activate # or venv\Scripts\activate on Windowspip install -r requirements.txtSECRET_KEY=supersecretkeypython run.pyThen open your browser and navigate to:
http://127.0.0.1:5000/
my_web_project/ ├── app/ │ ├── routes/ │ ├── models/ │ ├── services/ │ ├── templates/ │ └── static/ ├── tests/ ├── .env ├── .gitignore ├── config.py ├── requirements.txt ├── run.py └── README.md