1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo môn học lý thuyết mật mã

61 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cơ sở toán học của lý thuyết mật mã; Đồng dư và phương trình đồng dư tuyến tính; Thặng dư thu gọn và phần tử nguyên thủy
Tác giả Triệu Hoàng Quân, Nguyễn Minh Phúc, Nguyễn Anh Tuấn, Đặng Hữu Công Hiếu
Trường học Đại học Bách khoa Hà Nội, Trường Điện – Điện tử, Khoa Điện tử
Chuyên ngành Lý thuyết mật mã
Thể loại Báo cáo môn học
Thành phố Hà Nội
Định dạng
Số trang 61
Dung lượng 3,6 MB

Nội dung

Cơ sở toán học của lý thuyết mật mã 1.1 Số học các số ngu1.1 Số học các số nguyênyênyên Nghiên cứu về các tính chất của số nguyên, như tính chia hết, ước số chung, bội số chung, số nguyê

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI Trường Điện Đi – ện tử Khoa Điện tử

Lý thuy t m t mã ế ậ

Nhóm 12

Trang 2

Thông tin và nhiệm vụ từng thành viên:

1 Triệu Hoàng Quân (nhóm trưởng) Nhiệm vụ: tổng hợp thông tin; tìm hiể cơ sở u toán học lý thuyết mật mã, hệ mật vignere, hệ mật atbash; mô phỏng hệ ống thtruyền thông

2 Nguyễn Minh Phúc Nhiệm vụ: tìm hiểu cơ sở toán học lý thuyết mật mã, hệ mật Hill, chuẩn mã hóa nâng cao AES

3 Nguyễn Anh Tuấn Nhiệm vụ: tìm hiểu cơ sở toán học lý thuyết mật mã, hệ mật Caeser, hệ mật affine, hệ mật hiện đại RC4

4 Đặng Hữu Công Hiếu Nhiệm vụ: tìm hiểu cơ sở toán học lý thuyết mật mã, hệ mật Playfair, hệ mật DES

Trang 3

I Cơ sở toán học của lý thuyết mật mã

1.1 Số học các số ngu

1.1 Số học các số nguyênyênyên

Nghiên cứu về các tính chất của số nguyên, như tính chia hết, ước số chung, bội số chung, số nguyên tố, thuật toán Euclide, thuật toán Euclide mở rộng, thuật toán phân tích thừa số nguyên tố, thuật toán RSA, v.v

• Tập hợp: Sử dụng các tập hợp số nguyên Z, số nguyên không âm với các phép 𝑍+toán cộng, trừ, nhân

• Cho hai số nguyên bất kỳ a và b , b > 1, ta luôn xác định được q và r sao cho (r là phần dư)

𝑎 = 𝑏 × 𝑞 + 𝑟, 0 < 𝑟 < 𝑏

• Ước chung lớn nhất

𝑑 = gcd(𝑎, 𝑏)

• Số nguyên tố

Một số nguyên a > 1 được gọi là số nguyên tố, nếu a không có ước số

nào ngoài 1 và chính a; và a được gọi là hợp số nếu không phải là số

nguyên tố

• Một số nguyên n > 1 bất kỳ đều có thể ết dưới dạng:vi

𝑛 = 𝑝1𝛼1 𝑝2𝛼2… 𝑝𝑘𝛼𝑘Trong đó 1 , 2 , … 𝑝 𝑝 , 𝑝𝑘 là các số nguyên tố khác nhau, 1, 2 , … , 𝛼 𝛼 𝛼𝑘 là các số mũ nguyên dương

Đây là dạng khai triển chính tắc của n

• Định lý:

Nếu 𝑏 > 0 và 𝑏 | 𝑎 thì 𝑔𝑐𝑑(𝑎 , 𝑏) = 𝑏

Nếu 𝑎 = + 𝑟𝑏𝑞 thì 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑔𝑐𝑑(𝑏, 𝑟)

• Bội chung bé nhất m là bội số chung nhỏ ất của a và b, và mọi bội số chung củnh a

a và b đều là bội của m

𝑚 = 𝑙𝑐𝑚(𝑎, 𝑏)

• Với hai số nguyên dương a và b bất kỳ ta có quan hệ

𝑙𝑐𝑚 𝑎, 𝑏 gcd 𝑎, 𝑏 = 𝑎 𝑏( ) ( )1.2 Đồng dư v

1.2 Đồng dư và phươà phươà phương trình đồng dư tuyếng trình đồng dư tuyếng trình đồng dư tuyến tínhn tínhn tính

Đồng dư theo modular: nghiên cứu về các phép toán và tính chất của các số dư khi chia cho một số nguyên dương nào đó, như định lý số dư Trung Hoa, phương trình đồng dư tuyến tính, phương trình đồng dư bậc hai, thặng dư thu gọn, phần tử nguyên thủy, thuật toán Diffie Hellman, thuật toán ElGamal, v.v.-

Trang 4

Ví dụ: 68 và 39 là những số cùng lớp vì khi chia cho 29 đều dư 10

• Mỗi lớp tương đương được đại diện bởi một số duy nhất trong tập hợp:

𝑍𝑛= {0, 1, 2, 3, , 𝑛 − 1} là số dư chung khi chia cácsố trong lớp đó cho

Phương trình đồng dư tuyồng dư tuyồng dư tuyến tínhến tínhến tính

Phương trình đồng dư tuyến tính có dạng 𝑎𝑥 ≡ 𝑏 (𝑚𝑜𝑑 ) 𝑛

Trong đó a, b, n là các số nguyên, n > 0, x là ẩn số

Hệ phương trình đồng dư tuyến tính

Cho k số nguyên dương đôi một nguyên tố cùng nhau 𝑛 , 𝑛 , … , 𝑛1 2 𝑘

và 𝑎1, 𝑎2, … , 𝑎𝑘 là k số nguyên tuỳ ý Khi đó ta có hệ phương trình đồng dư tuyến tính

Trang 5

• Chứng minh sự duy nhất: Giả sử có hai nghiệm x, y dẫn đến

Thặng dưặng dưặng dư thu gọn và thu gọn và thu gọn và phần tử nguyên th phần tử nguyên thuỷ phần tử nguyên thuỷuỷ

• Tập 𝒁𝒏 = { 0,1,2, … , − 1} thường được gọi là tập các thặng dư đầy đủ theo 𝑛mod n, vì mọi số nguyên bất kỳ đều có thể tìm được trong Zn một số đồng dư với mình (theo 𝑚𝑜𝑑 𝑛 )

• Tập 𝒁𝒏 là đóng đối với các phép tính cộng, trừ và nhân theo 𝑚𝑜𝑑 𝑛, nhưng không đóng đối với phép chia, vì phép chia cho theo 𝑎 𝑚𝑜𝑑 𝑛 chỉ có thể thực hiện được khi và nguyên tố với nhau, tức khi gcd( , ) = 1.𝑎 𝑛 𝑎 𝑛

• Số ần tử của tập là { (10) = 6} được gọi là cấph 𝜑 p 𝜑(𝑛) của nhóm

là một phần tử sinh, hay phần tử nguyên thuỷ của nhóm

Trang 6

Vd : 7 là phần tử nguyên thủy của nhóm Z = {7 , 73 }

1.3 Phương t

1.3 Phương trình đồng dư bậc hai và rình đồng dư bậc hai và rình đồng dư bậc hai và thặng dư bậc haithặng dư bậc haithặng dư bậc hai

• Phương trình đồng dư bậc hai có dạng: 𝑥𝑥𝑥𝑥𝑥2 ≡ 𝑎𝑎𝑎𝑎(𝑚𝑜𝑑𝑚𝑜𝑑 𝑛𝑚𝑜𝑑𝑛𝑛)

Trong đó n là một số nguyên dương, a là số nguyên với gcd(a,n) = 1, và x là ẩn số

• Nếu phương trình có nghiệm thì a là thặng dư bậc 2 (mod n)

• Nếu phương trình vô nghiệm thì a là bất thặng dư bậc 2 (mod n)

Điều này được thực hiện bằng cách thử các giá trị của 𝑥 từ 0 đến n – 1 và kiểm tra xem giá trị nào thỏa mãn phương trình 𝑥𝑥𝑥𝑥𝑥2≡ 𝑎𝑎𝑎𝑎(𝑚𝑜𝑑𝑚𝑜𝑑𝑚𝑜𝑑 𝑛𝑛) 𝑛

Ví dụ, nếu muốn kiểm tra xem 7 có phải là thặng dư bậc hai modulo 11 hay không,

Trang 7

Ta thấy rằng không có số nguyên nào trong khoảng từ 0 đến 10 thỏa mãn phương trình 𝑥

≡ 7(𝑚𝑜𝑑 11) Do đó 7 không phải là thặng dư bậc 2 modulo 11

• Tập các số nguyên nguyên tố với 𝑛 ợc phân hoạch thành hai tập con: tậđư p 𝑄𝑛 các thặng dư bậc hai 𝑚𝑜𝑑 𝑛 , và tập Qn các bất thặng dư mod n

• Tiêu chuẩn Euler: Số a là thặng dư bậc hai (mod p) nếu và chỉ nếu 2

− p

a 1(mod )p

• Ký hiệu Legendre: p là một số nguyên tố lẻ, a 0 , ký hiệu

p

aLegendre được định nghĩa như sau:

• Với mọi a 0, ta có: a2(modp)

nppp

n 1 2 2 1

=thì:

kp

ap

ap

an

a

2 1

2 1

• Tính chất:

o Nếu m =1 m2(modn)thì = n

mn

Trang 8

o =

n

mn

m, 𝑘ℎ𝑖 m 3(𝑚𝑜𝑑 4) 𝑣à n 3(𝑚𝑜𝑑 4) n

m, 𝑘ℎ𝑖 m1(𝑚𝑜𝑑 4) n 3(𝑚𝑜𝑑 4)

1.4 Xác suất v

1.4 Xác suất và thuậà thuậà thuật toán xt toán xt toán xác suấác suấác suấttttt

Trong phần này ta nghiên cứu về các khái niệm và công thức liên quan đến xác suất, như không gian mẫu, biến cố, phép toán xác suất, xác suất có điều kiện, độc lập xác suất, biến ngẫu nhiên, phân phối xác suất, kỳ vọng, phương sai, định lý giới hạn trung tâm, thuật toán Monte Carlo, v.v

- Biến cố: là một kết quả có thể xảy ra trong một phép thử ẫu nhiên Biến cố ng

số có thể ận được là hữu hạn hay vô hạnh n

- Phân phối xác suất: là một quy tắc cho biết xác suất của mỗi giá trị hoặc khoảng giá trị của một biến ngẫu nhiên Phân phối xác suất có thể được biểu diễn bằng bảng, công thức, đồ thị hoặc hàm mật độ xác suất Có nhiều phân phối xác suất thống kê cơ bản, như phân phối nhị thức, phân phối chuẩn, phân phối Poisson, Phân bố xác suất 𝑃 trên Ω được định nghĩa là một tập các số ực không âm th 𝑃

= { 1, 2, … , 𝑝 𝑝 𝑝𝑛} có tổng ∑ = 1.𝑝𝑖

Xác suất có điều kiện: là khả năng xảy ra của một biến cố A khi biết một biến cố B khác đã xảy ra Xác suất có điều kiện được ký hiệu là P(A|B) và được tính theo công thức:

P(A B)=P(A∣ ∩B)/P(B)

Trang 9

Trong công thức trên, P(A ∩ B) là xác suất hợp của A và B, tức là xác suất của hai biến cố cùng xảy ra P(B) là xác suất của biến cố B Xác suất có điều kiện có thể được hiểu như là xác suất của A trong không gian mẫu mới, đã được thu hẹp lại bởi sự xảy ra của B

II CÁC HỆ MẬT CỔ ĐIỂN

2.1 Hệ mật mã

2.1 Hệ mật mã CaeserCaeser Caeser

2.1.1

2.1.1 ới thiGiới thiệệệệệới thiu:u:

H mệ ật mã Caeser còn được g i là M t mã d ch chuy n, là m t trong nh ng h ọ ậ ị ể ộ ữ ệmật mã cổ điển đơn giản nhất và được biết đến nhi u nh t trong l ch sề ấ ị ử Nó hoạt động bằng cách d ch chuy n m i ký t ị ể ỗ ự trong thông điệp một kho ng c nh theo b ng ch cái ả ố đị ả ữTrong l ch s , m t mã cị ử ậ ộng hưởng được g i là m t mã d ch chuy n Julius Caeser ọ ậ ị ể

đã sử dụng một hệ mật mã cộng để liên lạc với các sĩ quan của mình Vì lý do này, các hệ mật mã cộng đôi khi được g i là mọ ật mã Caeser, Caeser đã sử d ng mụ ột khóa d ch chuyị ển

là 3 cho các thông điệp của mình

2.1.2 Nguyên lý

2.1.2 Nguyên lý hoạt độ hoạt độ hoạt độngngng

Để ự th c hiện được mã hóa Caeser, trước tiên ta cần ánh xạ các ký t trong bảng thành ựcác ch cái Latinh thành các sữ ố tương ứng từ 00 25-

Plaintext and Ciphertex in Z26Sau đó ta thự ện quá trình mã hóa theo sơ đồ hi sau:

Ở đây, khóa klà m t s nguyên có giá tr thu c tộ ố ị ộ ập Z26 =0,1,2, ,25

VD: Mã hóa bản tin P = “NGUYENANHTUAN” bằng m t mã c ng v i khóa ậ ộ ớ k 5

Trang 10

Để giải mã, ta th c hiự ện theo sơ đồ sau:

Trong công th c này, ứ klà ph n t nghầ ừ ịch đảo c ng cộ ủa k trong tập Z26:

026

Trang 11

shifted =ord(char) -ord('A')

shifted (= shifted +shift) %26

encrypted_char =chr(shifted +ord('A'))

encrypted_text =caesar_cipher_encrypt(plaintext shift_amount, )

print("Mã hóa Caesar:", encrypted_text)

Trang 12

x=ord(char) -ord('a')

decrypted_char =chr((x -shift) %26+ord('a'))

result+=decrypted_char

else:

x=ord(char) -ord('A')

decrypted_char =chr((x -shift) %26+ord('A'))

decrypted_text =caesar_cipher_decrypt(ciphertext i, )

print("Key = { }i : decrypted_text}")

2.2 Hệ mật AFFI

2.2 Hệ mật AFFINENE NE

2.2.1

2.2.1 ới thiệuGiới thiệu

M t mã Affine là m t d ng m t mã thay th dùng m t b ng chậ ộ ạ ậ ế ộ ả ữ cái, trong đó mỗi chữ cái được ánh xạ tới một số, sau đó được mã hóa thông qua một hàm bậc nhất có dạng y=ax+b

2.2.2 Nguyên

2.2.2 Nguyên lý hoạt độ lý hoạt độ lý hoạt độngngng

Để thực hi n m t mã hóa Affine, ệ ậ trước tiên ta c n ánh x các kí t trong b ng ch ầ ạ ự ả ữcái Latinh thành các số tương ứng t 00 - 25 ừ

Plaintext and Ciphertex in Z26

Sau đó, thực hiện quá trình mã hóa theo sơ đồ sau:

Trang 13

Trong công th c này, 2 khóa ứ a và blà 2 s nguyên thu c tố ộ ập Z26, trong đó a và

26 là hai s nguyên t cùng nhau hay ố ố gcd(,a26) 1=

VD: Mã hóa bản tin P = “NGUYENANHTUAN” bằng m t mã Affine v i khóa ậ ớ =17

Trang 14

Ở đây, a1 là ph n t nghầ ử ịch đảo nhân của avà blà ph n t nghầ ử ịch đảo c ng ộcủa btrong tập Z26: a.− mod1 26 1= và (b+ b(−))mod26 =0

Mật mã c ng là mộ ột trường hợp đặc bi t c a m t mã Affine vệ ủ ậ ới a 1

Mật mã nhân là một trường hợp đặc bi t c a m t mã Affine vệ ủ ậ ới b 0

VD: Gi i s ả ử thu được ciphertext như ví dụ ở trên, bi t khóa ế =10 và b 5 Tìm plaintext?

Trang 15

x=ord(char) -ord('a')

encrypted_char =chr(((a * +b) %26) ord('a')) result+=encrypted_char

else:

x=ord(char) -ord('A')

encrypted_char =chr(((a * +b) %26) ord('A')) result+=encrypted_char

encrypted_text =affine_cipher_encrypt(plaintext, a, )

print("Mã hóa Affine:", encrypted_text)

Trang 16

forchar inciphertext:

ifchar.isalpha():

ifchar.islower():

x=ord(char) -ord('a')

decrypted_char =chr(((a_inv ( )) * x-b %26) ord('a'))

result+=decrypted_char

else:

x=ord(char) -ord('A')

decrypted_char =chr(((a_inv ( )) * x-b %26) ord('A'))

decrypted_text =affine_cipher_decrypt(ciphertext, a, )

print("Giải mã Affine:", decrypted_text)

2.3 Hệ mật H

2.3 Hệ mật HILLILL

2.3.1 Lịch

2.3.1 Lịch sử hình thành sử hình thành và phát tri sử hình thành và phát tri và phát triển :ển :ển :

Mật mã Hill được phát minh vào năm 1929 bởi Lester S Hill Đây là mật mã đa đồ họa đầu tiên trong đó việc thực tế là có thể ạt động nhiều hơn 3 ký tự một lúc hoMật mã Hill sử dụng modulo, nhân ma trận và nghịch đảo ma trận Do đó, nó là mật

mã thiên về toán học nhiều hơn các loại mật mã khác

Trang 17

Det(A) 0 và Det(A) khả nghịch trên Z thì gcd[ det(A),26 ] = 1 thì khi đó 26

Mật mã Hill là hệ mật trong đó P = C = (Z26 ) m và K với P là tập các ma trận m x

m biểu diễn plain text, C là tập các ma trận m x m biểu diễn cipher text, K là tập ác ma trận m x m khả nghịch trên Z26

Với mỗi ma trận k K, p ={p p1, , ,2 mp} P; c={c ,c , ,c }1 2 m C

Nếu các p và c ở dạng ma trận cột xác định :

o Hàm mã hóa : e (p) = K.pK

o Hàm giải mã : d (p) = K-1.c

Trang 18

Cho đoạn văn bản rõ plain text là : P = NGUYENMINHPHUC

a Mã hóa đoạn văn bản trên bằng mật mã Hill với khóa key là K = HILL

b Giải đoạn mã thu được ở câu a

Khóa K có kích thước 2x2 nên m=2 => chia bản rõ thành các đoạn có độ dài 2 kí tự

từ trái qua phải và mã hóa từng đoạn mã này :

13

EpN

8

MpI

2

UpC

Trang 19

Trên vành Z ta có (det(K)) = 7 vì 15.7 = 105 = 1mod2626 -1

Vì gcd( det(K), 26) = gcd (15, 26) = 1 nên K khả nghịch trên vành Z26

Trang 20

2.4.1 ới thiệuGiới thiệu

Mật mã Playfair là một phương pháp mã hóa chữ cái được sử dụng trong lĩnh vực mật mã học, được phát triển bởi Charles Wheatstone vào năm 1854 và được Lionel S Playfair chế tạo lại, từ đó mang tên củ ông Đây là một hệ ống mật mã a th

sử dụng một bảng chữ cái, thường là một ma trận 5x5, được tạo ra từ một từ khóa chọn lọc

Mật mã Playfair được sử dụng trong quá khứ cho mục đích thương mại và quân

sự Tuy nhiên, do một số hạn chế như khả năng bị ải mã dễ dàng nếu có thông gitin về từ khóa, nó đã được thay thế bởi các phương pháp mã hóa mạnh mẽ hơn trong thời kỳ ện đại Đây vẫn là một phương pháp mã hóa thú vị và có giá trị hitrong việc hiểu cơ bản về lịch sử của mật mã

2.4.2 Nguyên lý

2.4.2 Nguyên lý hoạt độ hoạt độ hoạt độngngng

a Chuẩn bị

Trang 21

❖ Ma trận mã hoã

• Cần tạo một ma trận 5x5 chứa các chữ cái không trùng lặp

• Bắt đầu bảng với các chữ cái của khóa key (loại bỏ ữ trùng) và sau đó điềch n các chữ cái còn lại theo thứ tự

• Lưu ý: Bảng chữ cái Tiếng Anh có 26 chữ cái, mà ở đây chỉ có 25, nên thường thì ta sẽ cho 2 chữ i và j vào cùng một chỗ

Ví dụ: Key = committee

a – – – b c d – – e f – – g h – – i j – – k l – – – – m n o p q – – – – – r s t u – v – – w x – – y z

❖ Chọn cặp chữ cái từ văn bản cần mã hoá Plaintext

• Nếu thừa ra 1 chữ cái sau khi nhóm thì cũng có thể ghép cặp chữ đó với 1 chữ cái bất kì

• Nếu cặp chữ trùng nhau: Thêm một chữ "dummy" như "X" giữa chúng và sau

đó giải mã như bình thường

Ví dụ: Plaintext = communication

→ co mx mu ni ca ti on

b Quy tắc mã hoá Playfair

• Nếu cặp chữ cùng nằm trong cùng một hàng hoặc cột: Di chuyển theo hàng hoặc cột sang chữ cái kế tiếp theo chiều tương ứng để ải mã.gi

• Nếu cặp chữ cách nhau: Tạo một hình chữ ật bằng cách lấy hai chữ cái ở nhđối diện của hình chữ nhật

• Lưu ý: Giữ nguyên khoảng cách và dấu câu khi giải mã

1 Ví dụ

• Mã hoã bằng mật mã Playfair Cho Plaintext = hellooneandall và Key = thedieis

a – – – – – – – b c d e f g h – i – j – k – – – l m n – – – – – – – – o p q r s t u v – – – w x y – z

Ta có, ma trận mã hoá là:

Trang 23

2.4.3 Lập trình mô phỏh mô phỏh mô phỏngngng

# Tạo ma trận key kích thước 5x5

# Function to generate the Playfair matrix

alphabet = "ABCDEFGHIKLMNOPQRSTUVWXYZ"

key = key.upper().replace("J" "I", )

key = ''.join(dict.fromkeys(key))

matrix = []

forchar in key:

ifchar not in matrix:

matrix.append(char)

forchar in alphabet:

ifchar not in matrix:

matrix.append(char)

playfair_matrix = [matrix[i:i+5] fori inrange(0, len(matrix), 5)] return playfair_matrix

# Tìm vị trí của chữ cái

# Function to get the position of a character in the matrix

# Function to encrypt plaintext using Playfair cipher

Trang 24

plaintext = plaintext.upper().replace("J" "I", )

iflen(plaintext) % != : 2 0

plaintext += 'X'

playfair_matrix = generate_playfair_matrix(key)

ciphertext = []

char1, char2 = plaintext[i], ''

i + if 1< len(plaintext):

char2 = plaintext[i + ] 1

row1, col1 = get_char_position(playfair_matrix, char1) row2, col2 = get_char_position(playfair_matrix, char2) row1 == row2: if

ciphertext.append(playfair_matrix[row1][(col1 + ) % 1 5]) ciphertext.append(playfair_matrix[row2][(col2 + ) % 1 5]) elif col1 == col2:

ciphertext.append(playfair_matrix[(row1 + ) % ][col1]) 1 5

ciphertext.append(playfair_matrix[(row2 + ) % ][col2]) 1 5

else:

ciphertext.append(playfair_matrix[row1][col2]) ciphertext.append(playfair_matrix[row2][col1]) return join(ciphertext) ''

# Thực hiện giải mã

# Function to decrypt ciphertext using Playfair cipher playfair_matrix = generate_playfair_matrix(key)

plaintext = []

char1, char2 = ciphertext[i], ''

i + if 1< len(ciphertext):

char2 = ciphertext[i + ] 1

row1, col1 = get_char_position(playfair_matrix, char1)

Trang 25

row2, col2 = get_char_position(playfair_matrix, char2)

ciphertext = playfair_encrypt(plaintext, key)

# Decryption

decrypted_text = playfair_decrypt(ciphertext, key)

2.5 Hệ mật vignerenerenere

Mật mã Vigenère là một phương pháp mã hóa văn bản cổ điển hoạt động bằng cách s d ng xen k mử ụ ẽ ột số phép mã hóa Caesar khác nhau d a trên các ch ự ữ

Trang 26

cái c a m t t khóa Nó là m t dủ ộ ừ ộ ạng đơn giản c a m t mã thay th dùng nhiủ ậ ế ều bảng ch cái ữ

2.5.1 Lịch

2.5.1 Lịch sử hình t sử hình thành sử hình thành hành

Mã hóa Vigenère được đặt tên theo nhà mật mã học người Pháp Blaise de Vigenère, người được coi là người đầu tiên giới thiệu phương pháp này Mã hóa Vigenère đã xuất hiện vào khoảng năm 1553 và được đăng trong tác phẩm của Vigenère có tựa đề "Traité des chiffres" (Quy n sách v ể ề mã hóa) Tuy nhiên, đã có một số đóng góp trước đó của các nhà m t mã hậ ọc khác như Giovan Battista Bellaso, người Ý, đã mô tả một phương pháp tương tự vào năm 1553 trong tác phẩm "La cifra del Sig Giovan Battista Bellaso"

Phương pháp mã hóa Vigenère tạo ra một loại mã hóa polyalphabetic, nơi mỗi ký tự trong văn bản được mã hóa bằng cách sử dụng một trong nhiều bảng chữ cái khác nhau, d a vào vị trí của ký t trong khóa Điều này làm cho việc giải ự ự

mã trở nên khó khăn hơn so với các phương pháp mã hóa monoalphabetic như Caesar cipher

Mã Vigenère đã được sử dụng rộng rãi trong quân s và truy n tin tình báo ự ềtrong m t th i gian dài vì nó t o ra m t mộ ờ ạ ộ ức độ độc đáo của tính an toàn so với các phương pháp mã hóa trước đó Tuy nhiên, sau này, khi các phương pháp giải

mã được phát triển, mã hóa Vigenère đã trở nên dễ b phá v , và các h ị ỡ ệ thống mã hóa m nh m ạ ẽ hơn đã thay thế nó trong nhiều ứng d ng ụ

2.5.2 Mô tả thuậ

2.5.2 Mô tả thuật toán mã hóa t toán mã hóa t toán mã hóa

Mã Vignere mã hóa b ng cách sằ ử dụng m t b ng hình vuông g m có 26 ộ ả ồhàng M i hàng d ch v bên trái mỗ ị ề ột bước so với hàng bên trên để ạ t o thành 26 bảng mã Caesar Trong quá trình mã hóa tùy vào t khóa mà m i thừ ỗ ời điểm ta dùng một dòng khác nhau để mã hóa văn bản

Trang 27

Ví d : ụ

Ta có plaintext: HELLO WORLD và key: MAHOA

Bước 1: Điền Keyword dưới chuỗi plaintext và tái diễn ta có:

Trang 28

def vigenere_encrypt(message, key):

key = generate_key(message, key) # S dử ụng hàm generate_key để ạ t o khóa encrypted_text = []

key_index = ord(key_char.upper()) - ord('A')

encrypted_index = (char_index + key_index) % 26

encrypted_char = chr(encrypted_index + ord('A'))

def vigenere_decrypt(encrypted_message, key):

key = generate_key(encrypted_message, key)

key_index = ord(key_char.upper()) - ord('A')

decrypted_index = (char_index - key_index) % 26

decrypted_char = chr(decrypted_index + ord('A'))

if char.islower():

decrypted_char = decrypted_char.lower()

Trang 29

# Mã hóa v i mã hóa Vigenère ớ

encrypted_message = vigenere_encrypt(message, key)

print(f"Encrypted message: {encrypted_message}")

# Gi i mã v i mã hóa Vigenère ả ớ

decrypted_message = vigenere_decrypt(encrypted_message, key)

print(f"Decrypted message: {decrypted_message}")

Vì tính chất đơn giản nên hệ mật này không được sử d ng cho mụ ục đích mã hóa b o m t mà chả ậ ỉ dùng để ngụy trang từ ngũ thông thường cho người đọc ph ổthông

2.6.2 Mã

2.6.2 Mã hóa và giải mã hóa và giải mã hóa và giải mã hệ mật Atbash hệ mật Atbash hệ mật Atbash

Đây là một mật mã đơn giản để giải mã Tất cả những gì bạn cần làm là tạo một b ng d ch vả ị ới các chữ cái trong b ng chả ữ cái được vi t tế ừ A đến Z ở phía trên

và đảo ngược ở phía dưới Tìm ch ữ cái trong văn bản mật mã của bạn ở hàng dưới cùng và nhìn phía trên nó để xem nó đã được giải mã chưa

Trang 30

2.6.3 Một số

2.6.3 Một số ến thể khác củbiến thể khác củến thể khác của mã Atbasha mã Atbash

Atbash dở ạng thông thường ch mã hóa các ch cái A-ỉ ữ Z, để ạ ố l i s và dấu câu dướ ạng văn bải d n thuần túy Các dạng biến thể của mật mã tồn tại bao gồm các s và các ký hi u ch m câu phố ệ ấ ổ biến nhất Điều này tương tự như cách ROT13

đã được mở rộng trong mật mã ROT18 và ROT47

Ngày đăng: 11/06/2024, 22:02

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w