Đây là dự án bài tập lớn cho môn học Mật Mã và Bảo Mật Thông Tin (Học kỳ 1, 2025-2026), thực hiện Đề tài 9: "Xây dựng chương trình phần mềm thực hiện thuật toán trao đổi khóa Diffie–Hellman giữa người gửi A và người nhận B".
Chương trình được viết bằng Python với giao diện đồ họa (GUI) để mô phỏng quá trình trao đổi khóa một cách trực quan, giúp người dùng dễ dàng hiểu được nguyên lý hoạt động của thuật toán.
Chương trình đáp ứng đầy đủ các yêu cầu của đề tài:
- Nhập tham số công khai: Cho phép người dùng nhập (hoặc chọn từ danh sách) số nguyên tố
pvà căn nguyên thủyg. - Tạo khóa bí mật: Cho phép người dùng tự nhập khóa bí mật
a(Bên A) vàb(Bên B), hoặc nhấn nút "Ngẫu nhiên" để tạo khóa an toàn. - Tính toán trung gian: Tự động tính toán và hiển thị các khóa công khai
A = g^a mod pvàB = g^b mod psau khi trao đổi. - Hiển thị kết quả: Tính toán và hiển thị khóa chung bí mật
K_AB = B^a mod p(hoặcA^b mod p). - Làm lại: Có nút "Xóa & Làm Lại" để nhanh chóng thực hiện một phiên mô phỏng mới.
- Ngôn ngữ: Python 3
- Giao diện (GUI): Tkinter & TTKBootstrap (để có giao diện hiện đại)
- Đóng gói: PyInstaller (để tạo file
.exe) và Inno Setup (để tạo file cài đặt).
Nếu bạn muốn chạy chương trình từ mã nguồn (.py) thay vì dùng file cài đặt, hãy làm theo các bước sau:
-
Clone repository:
git clone https://github.com/dunngxo6/diffie_hellman_key_exchange.git cd diffie_hellman_key_exchange -
(Khuyến nghị) Tạo môi trường ảo:
python -m venv venv .\venv\Scripts\activate # Trên Windows # source venv/bin/activate # Trên macOS/Linux
-
Cài đặt các thư viện cần thiết: (Hãy tạo một file
requirements.txtvới nội dung bên dưới, sau đó chạy lệnhpip)Nội dung file
requirements.txt:ttkbootstrapLệnh cài đặt:
pip install -r requirements.txt
-
Chạy chương trình:
python diffie_hellman.py
Bạn có thể sử dụng ví dụ minh họa trong báo cáo (mục 2.6) để kiểm tra:
- Mở chương trình lên.
- Tại mục Tham Số Công Khai:
- Nhập
p = 23 - Nhập
g = 5
- Nhập
- Tại mục Bên A và Bên B:
- Nhập khóa bí mật
a = 6 - Nhập khóa bí mật
b = 15
- Nhập khóa bí mật
- Nhấn nút "Thực Hiện Trao Đổi & Tính Khóa Chung".
- Quan sát kết quả:
- Khóa công khai A sẽ là:
8 - Khóa công khai B sẽ là:
19 - Khóa chung bí mật K sẽ là:
2
- Khóa công khai A sẽ là:
Điều này chứng minh chương trình đã tính toán chính xác.
Dự án này được cấp phép theo MIT License. Xem file LICENSE.txt để biết chi tiết.