Trong nhập môn lý thuyết mật mã các bạn phải làm việc với các bài toán về hệ mã Caesar, hệ mã khối, RSA. và việc giải bằng tay các bài toán sẽ gặp rất nhiều vấn đề tuy là không phức tạp nhưng mất rất nhiều thời gian của các bạn. Và maple chính là giải pháp để giúp đơn giản hóa vấn đề này để hổ trợ các bạn. Trong tài liệu có quy trình lập mã, giải mã rõ ràng cụ thể, kèm theo ví dụ
Trang 1Ứng dụng Maple trong lý thuyết mật mã
Đối với một số hệ mã đơn giản
I. Đối với hệ mã hóa Caesar.
1. Hệ mã Caesar.
Với hệ mã Caesar ta cho mỗi chữ cái ứng với một chữ số
Công thức: C ≡ P + 3 (mod m)(m số lượng ký tự trong
bảng chữ)
Nếu mở rộng ra ta có thể thay thế chữ số 3 bởi số k tùy ý trong khoảng từ 1 đến m Khi đó ta có mã biến đổi aphin:
C ≡ aP + k(mod m) với gcd(a, m) = 1
2. Quy trình lập mã và giải mã.
Trong Maple trước tiên ta phải tạo bảng mã tương ứng giữa chữ và số
Để tránh Maple hiểu lầm ta ký hiệu a_x, k_x, m_x thay cho a, k, m.
B1: Tạo chìa khóa bí mật và kiểm tra tính nguyên tố cùng nhau của hệ số nhân với số lượng các ký tứ trong bảng chữ m_x
B2: Nhập văn bản cần mã hóa
Trang 2B3: Mã hóa văn bản gốc.
B4: Giải mã văn bản gốc
Trang 3II. Đối với hệ mã khối.
Các tính toán với mã khối thực ra là tính toán trong đại số tuyến tính nên ta cần gói hỗ trợ cho chuyên ngành này bằng lệnh: [>with(linalg);
1. Khởi tạo khóa.
Sinh ngẫu nhiên một ma trận vuông cấp 9 với các phần
tử trên vành số nguyên modulo 29(số các phần tử trong bảng chữ) gọi là ma trận khóa và tính ma trận ngược của
nó gọi là ma trận giải
Trang 42. Quy trình lập mã.
B1: Nhập văn bản nguồn:
B3: Đưa về văn bản số hóa:
B4: Mã hóa văn bản số:
Trang 5B5: Chuyển văn bản mã dạng số về dạng chữ:
3. Quy trình giải mã.
B1: Nhập văn bản cần giải mã:
B2: Chuyển về dạng số:
Trang 6B3: Giải mã văn bản nhận được bằng ma trận giải:
Trang 7B4: Chuyển văn bản giải mã dạng số về dạng chữ(loại bỏ các ký tự ‘x’ ở cuối để có văn bản nguồn):
Bỏ các ký tự ‘x’ cuối cùng ta có được văn bản ban đầu: ‘thuc hanh lap ma’
Trang 8III. Đối với hệ mã RSA.
1. Hệ mã RSA.
Ta chọn 2 số nguyên tố p, q(rất lớn) hai số này là bí mật Sau đó tính n=p*q, n là công khai
Ta chọn 1 số e sao cho gcd(e,) = 1 Nên chọn e là số nguyên tố(1<e<,) e được công khai
d ≡ e-1 (mod ) bí mật
Ta có khóa riêng KR = {d, n} và khóa công khai là KU = {e, n}
2. Lập mã và giải mã.
B1: Tìm hai số nguyên tố lớn, tính n và , chọn e, tính d
Trang 9B2: Mã hóa văn bản nguồn.
B3: Giải mã
Trang 113. Giải mã.
B1: Nhập văn bản mã
B2: Giải mã RSA bằng cách nâng lên lũy thừa bậc d và rút gọn theo modul n rồi chuyển văn bản số nhận được về dạng chữ