Professional Documents
Culture Documents
Báo Cáo BTL
Báo Cáo BTL
Nhóm 11 - L04
1. Đỗ Duy Khương
2. Lê Quốc Duy
3. Nguyễn Thị Minh Hảo
4. Trần Hoài Nam
5. Hồ Vũ Quốc
6. Trần Thanh An
ỨNG DỤNG CỦA MÃ HILL
Nguyễn Thị Minh Hảo
Cơ sở lí thuyết:
Mã hóa dựa trên ma trận vuông trong đại số tuyến tính
Mỗi chữ cái được biểu diễn bởi một con số chạy từ 0-25
0 1 2 3 4 5 6 7 8 9 10 11 12
A B C D E F G H I J K L M
13 14 15 16 17 18 19 20 21 22 23 24 25
N O P Q R S T U V W X Y Z
ỨNG DỤNG CỦA MÃ HILL
Nguyễn Thị Minh Hảo
( )
B1: Chọn 1 khóa K : 2 1 7 Điều kiện: det(K) là số cùng nguyên tố với 26
2 2 3 Ở đây det(K)=17
1 3 2
B2: Chuyển văn bản thành kí tự tương ứng
M A T M A H I L L
12 0 19 12 0 7 8 11 11
( ) ( ) ( )
12 12 8
0 0 11
19 7 11
Quy trình mã hóa và giải mã:
Mã hóa: MATMAHILL *********
( ) ( ) ( ) ( )
2 1 7 12 157 1
2 2 3 x 0 = 81 3
1 3 2 19 50 24
( ) ( ) ( ) ( )
2 1 7 12 73 21
2 2 3 x 0 = 45 19
1 3 2 7 26 0
( ) ( ) ( ) ( )
2 1 7 8 104 0
2 2 3 x 11 = 71 19
1 3 2 11 63 11
Quy trình mã hóa và giải mã:
Mã hóa: MATMAHILL *********
0 1 2 3 4 5 6 7 8 9 10 11 12
B4: Chuyển kí tự về chữ cái tương ứng A B C D E F G H I J K L M
13 14 15 16 17 18 19 20 21 22 23 24 25
( )
1 B
3 N O P Q R S T U V W X Y Z
D
24 Y
BDYVTAATL
( )
21 V
19 T B D Y V T A A T L
0 A
1 3 24 21 19 0 0 19 11
( )
0 A
19 T
11 L
Quy trình mã hóa và giải mã:
Giải mã: BDYVTAATL MATMAHILL
Bước 1: Tìm định thức của ma trận K và tính định thức trên mod26.
Bước 2: Tìm ma trận Adj(K) và tính ma trận trên mod26.
Bước 3: Tính nghịch đảo của module bằng phép toán Euclid mở rộng.
Bước 4: Tìm ma trận .
−𝟏 𝟏
𝑲 = ⋅ 𝑨 𝒅𝒋 ( 𝑲 ) 𝐦𝐨𝐝 𝟐𝟔
𝒅ⅇ 𝒇 (𝑲)
Quy trình mã hóa và giải mã:
Giải mã: BDYVTAATL MATMAHILL
B1: Ta có det(K) = 17
( )
21 19 15
−𝟏 𝟏
B3: Ta có công thức 𝑲 = ⋅ 25 23 8 𝐦𝐨𝐝 𝟐𝟔
𝟏𝟕
4 21 2
4) 8 = 1x8 + 0
Quy trình mã hóa và giải mã:
Giải mã: BDYVTAATL MATMAHILL
= 23. mod 26
Dòng này nhập thư viện NumPy và đặt tên gọi là ‘np.’ Điều này cho phép bạn sử dụng
các hàm và lớp trong NumPy trong mã của bạn bằng cách thêm tiền tố ‘np.’.python
Đoạn này định nghĩa hàm ‘ma_hoa’ nhận vào ba ký tự ’a’, ‘b’, và ‘c’, cùng với ma trận 3x3
‘ma_tran_khoa’.
Trong hàm:
Chuyển các ký tự ‘a’, ‘b’, và ‘c’ thành số bằng cách trừ giá trị ASCII của 'A'.
Tạo mảng NumPy ‘pos’ chứa các giá trị số này.
Thực hiện tích vô hướng giữa ma trận ‘ma_tran_khoa’ và mảng ‘pos’ rồi lấy phần dư cho 26.
Chuyển các số thu được trở lại dạng ký tự bằng ‘chr()’ và sử dụng 'A' như giá trị ASCII cơ sở.
Giải thích code
Giải thích code
Phần này định nghĩa hàm ‘main()’, chứa logic chính của chương trình:
Yêu cầu người dùng nhập ma trận 3x3 bằng cách nhập từng hàng riêng và chuyển thành mảng NumPy
‘ma_tran_khoa’.
Yêu cầu người dùng nhập thông điệp (‘tin_nhan’), in thông điệp đó ra, chuyển thành chữ in hoa và thay thế dấu
cách bằng dấu gạch dưới.
Kiểm tra độ dài của thông điệp để đảm bảo nó chia hết cho kích thước của ‘ma_tran_khoa’. Nếu không, thêm ký
tự 'X' để làm cho nó chia hết.
Sử dụng list comprehension để áp dụng hàm ‘ma_hoa’ vào các phần của thông điệp đã được thêm ký tự 'X' (3 ký tự
một lần) sử dụng ma trận ‘ma_tran_khoa’. Cuối cùng, nối các kết quả vào ‘ma_hoa_tin_nhan’ và in ra dưới dạng
thông điệp đã mã hóa.
Tổng thể, đoạn code này nhằm mục đích lấy một ma trận 3x3 làm khóa và mã hóa một thông điệp nhập từ người
dùng bằng cách sử dụng ma trận này và một phương pháp mã hóa cụ thể (hàm ‘ma_hoa’).
Sử dụng ví dụ:
Giải thích code
Nếu nghịch đảo thành công, ma trận này được chuyển đổi thành mảng NumPy.
Giải thích code
Ở phần này, chương trình yêu cầu người dùng nhập thông điệp cần giải mã.
Sau đó, chuyển đổi thông điệp thành chữ in hoa và loại bỏ dấu cách.
Cuối cùng, sử dụng hàm ‘giai_ma’ để giải mã từng phần của thông điệp và hiển thị kết quả.
Tổng thể, đoạn mã này nhằm mục đích nhận thông điệp đã được mã hóa bằng ma trận khóa 3x3 và giải mã nó
bằng ma trận nghịch đảo tương ứng.
Sử dụng ví dụ:
ỨNG DỤNG CỦA MÃ HILL
Nguyễn Thị Minh Hảo
Lĩnh vực quân sự : Hỗ trợ truyền tin giữa các đơn vị quân sự và bảo mật thông tin quan
trọng trong quân đội.
Lĩnh vực trao đổi thư tín và tin nhắn : mã hóa tin nhắn văn bản,tập tin,...,đảm bảo tính bảo
mật và riêng tư của thông tin.
Lĩnh vực thương mại điện tử : mã hóa dữ liệu và thông tin cá nhân trong quá trình mua sắm
và giao dịch trực tuyến.
Lĩnh vực IoT : bảo mật dữ liệu truyền tải và quản lí quyền truy cập trong môi trường IoT.
Mô hình ứng dụng tiêu biểu : Mã hóa đầu cuối
Mã hóa đầu cuối (end-to-end encryption) là quá trình mã hóa thông tin.Sau khi bản rõ
được mã hóa,key giải mã sẽ được gửi đến cá nhân được chỉ định,chỉ có 1 key duy
nhất.Trong quá trình gửi,không có đơn vị trung gian nào có thể giải mã được.
THANKS FOR WATCHING !