Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 30

BÁO CÁO BTL

MÂT MÃ HILL TRONG


. TOÁN MÃ HÓA
BÀI

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

LỊCH SỬ CỦA HILL CIPHER


Đỗ Duy Khương

THUẬT TOÁN BẰNG PYTHON


Hồ Vũ Quốc
Đỗ Duy Khương

NGUYÊN LÍ HOẠT ĐỌNG


Trần Hoài Nam
Lê Quốc Duy
Đỗ Duy Khương
LỊCH SỬ CỦA HILL CIPHER
HILL CIPHER
Được phát minh bởi nhà toán học người Mỹ Lester S. Hill vào
năm 1929, khi ông đang là giáo sư tại Đại học George Washington
TỔNG QUAN
Mật mã Hill: Mã cổ điển đối xứng – 1929 - Lester S.Hill
Mã hóa một nhóm gồm: hai kí tự, ba kí tự hay nhiều kí tự

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

LỊCH SỬ CỦA HILL CIPHER


Đỗ Duy Khương

THUẬT TOÁN BẰNG PYTHON


Hồ Vũ Quốc
Đỗ Duy Khương

NGUYÊN LÍ HOẠT ĐỘNG


Trần Hoài Nam
Lê Quốc Duy
NGUYÊN LÍ HOẠT ĐỘNG
Lê Quốc Duy
Trần Hoài Nam
Quy trình mã hóa và giải mã:
Mã hóa: MATMAHILL  *********

( )
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  *********

B3: Nhân ma trận khóa K với các vecto cột :

( ) ( ) ( ) ( )
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

B2: Tìm ma trận Adj(K)


mod 26
Adj(K) mod 26 =
mod 26
Quy trình mã hóa và giải mã:
Giải mã: BDYVTAATL  MATMAHILL

( )
21 19 15
−𝟏 𝟏
B3: Ta có công thức 𝑲 = ⋅ 25 23 8 𝐦𝐨𝐝 𝟐𝟔
𝟏𝟕
4 21 2

Áp dụng thuật toán Euclid, ta có


1) 26 = 1.17 + 9 => 9 = 26 – 1x17

2) 17 = 1.9 + 8 => 17 = 1x(26 – 1x27) + 8


=> 8 = 2x17 – 1x26
Nhận biểu thức mở rộng
tại mục 3 :
3) 9 = 1.8 + 1 => 9 = 1x(2x17 – 1x26) + 1
1 = 2x26 – 3x17
=> (26 – 1x17) = (2x17 – 1x26) + 1
Ta có -3 mod 26 = 23
=> 1 = 2x26 – 3x17

4) 8 = 1x8 + 0
Quy trình mã hóa và giải mã:
Giải mã: BDYVTAATL  MATMAHILL

B4: Tìm ma trận

= 23. mod 26

Hàm giải mã dk(C)= C mod 26


Quy trình mã hóa và giải mã:
Giải mã: BDYVTAATL  MATMAHILL

mod 26 = mod 26 = mod 26 = =

mod 26 = mod 26 = mod 26 = =

mod 26 = mod 26 = mod 26 = =

Vậy bản rõ thu được là “MATMAHILL”


ỨNG DỤNG CỦA MÃ HILL
Nguyễn Thị Minh Hảo

LỊCH SỬ CỦA HILL CIPHER


Đỗ Duy Khương

THUẬT TOÁN BẰNG PYTHON


Hồ Vũ Quốc
Đỗ Duy Khương

NGUYÊN LÍ HOẠT ĐỌNG


Trần Hoài Nam
Lê Quốc Duy
THUẬT TOÁN BẰNG PYTHON
Đỗ Duy Khương
Hồ Vũ Quốc
Chương trình mã hóa:
Giải thích code:

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

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 khóa 3x3 và chuyển đổi các giá trị thành ma trận NumPy.

 Sử dụng ‘Matrix(nhap_khoa).inv(26)’ để tính ma trận nghịch đảo modulo 26 của


 ma trận khóa nhập vào. Nếu không thể nghịch đảo, sẽ gây ra một lỗi và thông báo cho người dùng.

 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ỊCH SỬ CỦA HILL CIPHER


Đỗ Duy Khương

THUẬT TOÁN BẰNG PYTHON


Hồ Vũ Quốc
Đỗ Duy Khương

NGUYÊN LÍ HOẠT ĐỌNG


Trần Hoài Nam
Lê Quốc Duy
ỨNG DỤNG CỦA MÃ HILL
Nguyễn Thị Minh Hảo
Ứng dụng nổi trội của mã Hill trong đời sống hiện đại:

 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 !

You might also like