SlideShare a Scribd company logo
1 of 10
Chương 1: Một số kiến thức toán học bổ trợ
Chương 2: Các khái niệm cơ sở và mật mã khóa đối xứng
1. Mật mã Caesar
Mã hóa Caesar là một phương pháp mã hóa đơn giản trong mật mã học, được
gọi là "phép dịch chữ cái". Phương pháp này được đặt tên theo Julius Caesar, người
được cho là đã sử dụng nó để gửi tin nhắn bí mật trong thời kỳ La Mã cổ đại.
* Kỹ thuật mã hóa
Cách thực hiện mã hóa Caesar như sau:
1. Chọn một khoá: Khoá trong trường hợp này là một số nguyên dương,
thường được gọi là "bước dịch" hoặc "độ lệch". Khoá này quyết định bao
nhiêu chữ cái sẽ được dịch.
2. Dịch các chữ cái: Mỗi chữ cái trong thông điệp gốc được dịch đi một số
bước tương ứng với khoá đã chọn. Ví dụ, nếu chọn khoá là 3, thì 'A' sẽ
được dịch thành 'D', 'B' sẽ được dịch thành 'E', và cứ như vậy.
3. Quy tắc dịch: Các chữ cái được dịch theo hình vòng tròn, nghĩa là sau khi
dịch hết các chữ cái trong bảng chữ cái, nó sẽ quay lại bắt đầu từ đầu.
Chẳng hạn, nếu cuối cùng đến 'Z', nó sẽ quay trở lại 'A'.
4. Bảo toàn khoảng trắng và ký tự khác: Khoảng trắng và các ký tự đặc biệt
không được dịch, chúng được bảo toàn nguyên trạng.
* Kỹ thuật giải mã
Để giải mã một thông điệp được mã hóa Caesar, bạn sẽ thực hiện phép dịch
ngược lại với cùng một khoá, đưa nó trở về dạng gốc.
Tóm lại, mã hóa Caesar là một phương pháp đơn giản nhưng không an toàn đối
với các vấn đề bảo mật cao, vì có thể dễ dàng bị giải mã bằng cách thử nghiệm tất
cả các khả năng.
Bản rõ (Plaintext): P = {p0, p1, p2,…, pn-1}
Bản mã (Cipher): C = {c0, c1, c2,…, cn-1}
Khóa (Key): K = k ( 0<k<26)
Phép mã hóa (Encrypt)-E: C = (P+k)mod26
Phép giải mã (Decrypt)-E: C = (P-k)mod26
Tham khảo nguồn Caesar Cipher in Cryptography - GeeksforGeeks
2. Mật mã Playfair
Mật mã Playfair là mật mã thay thế digraph thực tế đầu tiên. Sơ đồ này được
phát minh vào năm 1854 bởi Charles Wheatstone nhưng được đặt theo tên của Lord
Playfair, người đã thúc đẩy việc sử dụng mật mã. Nó được sử dụng cho các mục đích
chiến thuật của các lực lượng Anh trong Chiến tranh Boer lần thứ hai và trong Thế
chiến I và cho cùng một mục đích của người Úc trong Thế chiến II. Điều này là do
Playfair sử dụng khá nhanh và không yêu cầu thiết bị đặc biệt.
* Kỹ thuật mã hóa
Trong mật mã playfair không giống như mật mã truyền thống, chúng tôi mã
hóa một cặp bảng chữ cái (digraph) thay vì một bảng chữ cái duy nhất. Phương pháp
này dựa trên việc sử dụng một bảng chứa các chữ cái để mã hóa và giải mã thông
điệp. Cụ thể, quy trình mã hóa Playfair được thực hiện như sau:
1. Tạo bảng Playfair:
Hình vuông khóa là một lưới bảng chữ cái 5×5 hoạt động như chìa khóa để mã
hóa bản rõ. Mỗi bảng chữ cái trong số 25 bảng chữ cái phải là duy nhất và một chữ
cái của bảng chữ cái (thường là J) bị bỏ qua khỏi bảng (vì bảng chỉ có thể chứa 25
bảng chữ cái). Nếu bản rõ chứa J, thì nó được thay thế bằng I.
Bảng này được tạo ra từ một khẩu điển (keyword) được chọn bởi người mã hóa.
Các chữ cái trong khẩu điển không được lặp lại và viết hoa. Các chữ cái của bảng
Playfair được điền vào từ trái qua phải, từ trên xuống dưới, bỏ qua các chữ cái đã xuất
hiện trong khẩu điển.
Ví dụ: Nếu khẩu điển là "KEYWORD", bảng Playfair sẽ có dạng:
K E Y W O
R D A B C
F G H I L
M N P Q S
T U V X Z
2. Chia thông điệp thành các cặp chữ cái:
Bước này thực hiện trước khi mã hóa. Nếu trong cặp chữ cái có hai chữ giống nhau
hoặc bị trùng, chèn một chữ "X" ở giữa.
Ví dụ: Nếu thông điệp là "HELLO WORLD", ta sẽ có "HE LX LO WO RL DX".
3. Mã hóa từng cặp chữ cái:
Với mỗi cặp chữ cái, ta thực hiện các bước sau:
 Nếu cặp cùng một hàng trên bảng Playfair, thì thay thế mỗi chữ cái bằng chữ
cái phía bên phải của nó. Nếu ở cuối hàng, chuyển đến chữ cái đầu.
 Nếu cặp cùng một cột trên bảng Playfair, thì thay thế mỗi chữ cái bằng chữ cái
phía dưới của nó. Nếu ở cuối cột, chuyển đến chữ cái đầu.
 Nếu không thuộc cùng hàng hoặc cột, tạo một hình vuông ở giữa cặp chữ cái,
sau đó chọn chữ cái phía đối diện.
Ví dụ: Sử dụng bảng Playfair trên, cặp "HE" sẽ được mã hóa thành "GR", cặp "LX"
sẽ được mã hóa thành "MN", vv.
4. Kết hợp các cặp đã mã hóa lại:
Cuối cùng, ta kết hợp các cặp đã mã hóa lại thành thông điệp đã mã hóa.
Mã hóa Playfair mang lại sự bảo mật tương đối vì nó sử dụng một bảng phức tạp để
thay đổi các cặp chữ cái. Tuy nhiên, cũng có một số điểm yếu, ví dụ như cần phải xử
lý ký tự đặc biệt như "J" trong tiếng Anh, và khái niệm về khẩu điển khá quan trọng
để bảo mật thông điệp.
Chẳng hạn:
* Kỹ thuật giải mã
Giải mã mật mã Playfair cũng đơn giản như thực hiện ngược lại quy trình tương
tự. Người nhận có cùng khóa và có thể tạo cùng một bảng khóa, sau đó giải mã bất
kỳ tin nhắn nào được thực hiện bằng khóa đó.
Lưu ý: Bản mã luôn có số ký tự chẵn.
Thực hiện các bước tương tự như trong kỹ thuật mã hóa. Khác nhau tại quy tắc
giải mã từng cặp chữ cái trong Bước 3.
 Nếu cả hai chữ cái nằm trong cùng một cột: Lấy chữ cái phía trên mỗi chữ
cái (quay trở lại dưới cùng nếu ở trên cùng).
 Nếu cả hai chữ cái nằm trong cùng một hàng: Lấy chữ cái ở bên trái của
mỗi chữ cái (quay lại ngoài cùng bên phải nếu ở vị trí ngoài cùng bên trái).
 Nếu cả hai quy tắc trên đều không đúng: Tạo thành một hình chữ nhật với
hai chữ cái và lấy các chữ cái ở góc ngang đối diện của hình chữ nhật.
Chẳng hạn:
Tham khảo nguồn Mật mã Playfair với các ví dụ - GeeksforGeeks
3. Mật mã Hill
Mật mã Hill là một mật mã thay thế đa dạng dựa trên đại số tuyến tính. Mỗi
chữ cái được biểu thị bằng một số modulo 26. Nó được phát triển bởi nhà toán học
Lester S. Hill vào năm 1929.
Cơ bản, mật mã Hill mã hóa thông điệp bằng cách chia thành các khối con
(thường là các cặp hoặc các nhóm các chữ cái), sau đó nhân chúng với một ma trận
số nguyên. Mục tiêu của mật mã Hill là thay đổi tần suất xuất hiện của các ký tự để
làm cho việc giải mã trở nên khó khăn.
Để mã hóa một thông điệp, mỗi khối n chữ cái (được coi là vectơ n thành
phần) được nhân với một ma trận n × n đảo ngược, với mô đun 26. Để giải mã
thông điệp, mỗi khối được nhân với nghịch đảo của ma trận được sử dụng để mã
hóa.
Ví dụ:
Input : Plaintext: ACT
Key: GYBNQKURP
Output : Ciphertext: POH
* Kỹ thuật mã hóa
1. Chọn ma trận khóa (key matrix): Ma trận này phải là một ma trận vuông
có nghịch đảo modular. Điều này đảm bảo rằng việc giải mã sẽ được thực hiện
được. Ma trận này phải có kích thước tùy ý, nhưng thường được chọn có kích
thước 2x2 hoặc 3x3.
2. Chia thông điệp thành các khối con: Thông điệp được chia thành các cặp
hoặc nhóm các chữ cái. Mỗi cặp hoặc nhóm sẽ được biểu diễn bằng một vector
(dưới dạng các số nguyên).
3. Nhân ma trận khóa với vector đại diện cho cặp hoặc nhóm: Kết quả của
phép nhân sẽ là một vector mới.
4. Chuyển đổi vector kết quả thành các chữ cái: Các số nguyên trong vector
kết quả được chuyển đổi thành các chữ cái tương ứng.
Ví dụ:
Chúng ta phải mã hóa thông điệp 'ACT' (n = 3). Khóa là 'GYBNQKURP' có thể
được viết dưới dạng ma trận nxn:
Thông điệp 'ACT' được viết dưới dạng vector:
Vectơ được mã hóa được cho là:
tương ứng với bản mã của 'POH'
* Kỹ thuật giải mã
Tương tự như mã hóa, khác ở bước chọn ma trận khóa thì ở đây ta cần tìm ma
trận nghịch đảo của ma trận khóa. Sau đó thực hiện nhân ma
Sử dụng lại ví dụ trên:
Để giải mã thông điệp, chúng ta biến bản mã trở lại thành một vector, sau đó
chỉ cần nhân với ma trận nghịch đảo của ma trận khóa (IFKVIVVMI bằng chữ cái).
Nghịch đảo của ma trận được sử dụng trong ví dụ trước là:
Đối với bản mã 'POH' trước đó:
mang lại cho chúng tôi 'ACT'.
4. Mật mã Vigenere
Mật mã Vigenere là một phương pháp mã hóa văn bản chữ cái. Nó sử dụng
một hình thức thay thế đa chữ cái đơn giản. Mật mã đa chữ cái là bất kỳ mật mã nào
dựa trên sự thay thế, sử dụng nhiều bảng chữ cái thay thế. Việc mã hóa văn bản gốc
được thực hiện bằng cách sử dụng hình vuông Vigenère hoặc bảng Vigenère.
 Bảng này bao gồm các bảng chữ cái được viết ra 26 lần trong các hàng khác
nhau, mỗi bảng chữ cái dịch chuyển theo chu kỳ sang trái so với bảng chữ
cái trước đó, tương ứng với 26 Mật mã Caesar có thể.
 Tại các điểm khác nhau trong quá trình mã hóa, mật mã sử dụng một bảng
chữ cái khác với một trong các hàng.
 Bảng chữ cái được sử dụng tại mỗi điểm phụ thuộc vào một từ khóa lặp lại.
Ví dụ:
Input : Plaintext : GEEKSFORGEEKS
Keyword : AYUSH
Output : Ciphertext : GCYCZFMLYLEIM
Để tạo khóa, từ khóa đã cho được lặp lại theo cách tròn cho đến khi nó khớp
với độ dài của văn bản thuần túy.
Từ khóa "AYUSH" tạo khóa "AYUSHAYUSHAYU" Văn bản thuần túy sau
đó được mã hóa bằng quy trình được giải thích bên dưới.
* Kỹ thuật mã hóa
Chữ cái đầu tiên của bản rõ, G được ghép với A, chữ cái đầu tiên của khóa. Vì
vậy, sử dụng hàng G và cột A của hình vuông Vigenère, cụ thể là G. Tương tự, đối
với chữ cái thứ hai của bản rõ, chữ cái thứ hai của khóa được sử dụng, chữ cái ở hàng
E và cột Y là C. Phần còn lại của bản rõ được mã hóa theo cách tương tự.
Giải mã được thực hiện bằng cách đi đến hàng trong bảng tương ứng với khóa,
tìm vị trí của chữ cái bản mã trong hàng này, sau đó sử dụng nhãn của cột làm bản
rõ. Ví dụ: trong hàng A (từ AYUSH), bản mã G xuất hiện trong cột G, là chữ cái văn
bản rõ đầu tiên. Tiếp theo, chúng ta đi đến hàng Y (từ AYUSH), xác định vị trí bản
mã C được tìm thấy trong cột E, do đó E là chữ cái văn bản rõ thứ hai.

More Related Content

What's hot

Bai giang atbmtt
Bai giang atbmtt Bai giang atbmtt
Bai giang atbmtt
Hà Vũ
 
91684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-291684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-2
tranquanthien
 
Bài giảng bảo mật hệ thống thông tin
Bài giảng bảo mật hệ thống thông tinBài giảng bảo mật hệ thống thông tin
Bài giảng bảo mật hệ thống thông tin
Tran Tien
 
Thuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demoThuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demo
Công Thắng Trương
 

What's hot (20)

Bài gảng cơ sở an toàn thông tin PTIT
Bài gảng cơ sở an toàn thông tin PTITBài gảng cơ sở an toàn thông tin PTIT
Bài gảng cơ sở an toàn thông tin PTIT
 
Các thuật toán mã hóa
Các thuật toán mã hóaCác thuật toán mã hóa
Các thuật toán mã hóa
 
Bai giang atbmtt
Bai giang atbmtt Bai giang atbmtt
Bai giang atbmtt
 
Tổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tinTổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tin
 
91684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-291684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-2
 
Bài giảng bảo mật hệ thống thông tin
Bài giảng bảo mật hệ thống thông tinBài giảng bảo mật hệ thống thông tin
Bài giảng bảo mật hệ thống thông tin
 
BẢO MẬT VÀ AN TOÀN THÔNG TIN TRONG THƯƠNG MẠI ĐIỆN TỬ
BẢO MẬT VÀ AN TOÀN THÔNG TIN TRONG THƯƠNG MẠI ĐIỆN TỬBẢO MẬT VÀ AN TOÀN THÔNG TIN TRONG THƯƠNG MẠI ĐIỆN TỬ
BẢO MẬT VÀ AN TOÀN THÔNG TIN TRONG THƯƠNG MẠI ĐIỆN TỬ
 
Chương 8_Bảo mật và an ninh mạng
Chương 8_Bảo mật và an ninh mạngChương 8_Bảo mật và an ninh mạng
Chương 8_Bảo mật và an ninh mạng
 
đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155
 
MATMA - Chuong2
MATMA - Chuong2MATMA - Chuong2
MATMA - Chuong2
 
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
 
7. tìm hiểu hàm băm md5 và ứng dụng
7. tìm hiểu hàm băm md5 và ứng dụng7. tìm hiểu hàm băm md5 và ứng dụng
7. tìm hiểu hàm băm md5 và ứng dụng
 
Đề tài: Nghiên cứu và triển khai hệ thống Windown Server 2012
Đề tài: Nghiên cứu và triển khai hệ thống Windown Server 2012Đề tài: Nghiên cứu và triển khai hệ thống Windown Server 2012
Đề tài: Nghiên cứu và triển khai hệ thống Windown Server 2012
 
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
 
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uốngĐề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
 
HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)
 
Đề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đ
Đề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đĐề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đ
Đề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đ
 
Khái quát Kerberos
Khái quát Kerberos Khái quát Kerberos
Khái quát Kerberos
 
MỘT SỐ NGUY CƠ ĐỐI VỚI AN TOÀN, BẢO MẬT THÔNG TIN TRÊN MẠNG CNTT CƠ QUAN ĐẢNG...
MỘT SỐ NGUY CƠ ĐỐI VỚI AN TOÀN, BẢO MẬT THÔNG TIN TRÊN MẠNG CNTT CƠ QUAN ĐẢNG...MỘT SỐ NGUY CƠ ĐỐI VỚI AN TOÀN, BẢO MẬT THÔNG TIN TRÊN MẠNG CNTT CƠ QUAN ĐẢNG...
MỘT SỐ NGUY CƠ ĐỐI VỚI AN TOÀN, BẢO MẬT THÔNG TIN TRÊN MẠNG CNTT CƠ QUAN ĐẢNG...
 
Thuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demoThuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demo
 

Similar to Lý thuyết về mật mã đối xứng.docx

Bai giangtrenlop
Bai giangtrenlopBai giangtrenlop
Bai giangtrenlop
Hồ Lợi
 
lap trinh assembly cho VXL
lap trinh  assembly cho VXLlap trinh  assembly cho VXL
lap trinh assembly cho VXL
Thân Khương
 
H hai epc_baitap
H hai epc_baitapH hai epc_baitap
H hai epc_baitap
Hồ Lợi
 

Similar to Lý thuyết về mật mã đối xứng.docx (20)

Ch02
Ch02Ch02
Ch02
 
Ch02
Ch02Ch02
Ch02
 
01 ma hoa
01 ma hoa01 ma hoa
01 ma hoa
 
Hệ mật mã Mcelice
Hệ mật mã MceliceHệ mật mã Mcelice
Hệ mật mã Mcelice
 
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansi
 
Bai giangtrenlop
Bai giangtrenlopBai giangtrenlop
Bai giangtrenlop
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
Kế toán Excel
Kế toán ExcelKế toán Excel
Kế toán Excel
 
lap trinh assembly cho VXL
lap trinh  assembly cho VXLlap trinh  assembly cho VXL
lap trinh assembly cho VXL
 
Vb6 16 (6)
Vb6 16 (6)Vb6 16 (6)
Vb6 16 (6)
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2
 
Chuong4 uni
Chuong4 uniChuong4 uni
Chuong4 uni
 
Huong danthuchanhmang
Huong danthuchanhmangHuong danthuchanhmang
Huong danthuchanhmang
 
Chuong 05
Chuong 05Chuong 05
Chuong 05
 
H hai epc_baitap
H hai epc_baitapH hai epc_baitap
H hai epc_baitap
 
Bai12 kieuxau
Bai12 kieuxauBai12 kieuxau
Bai12 kieuxau
 
Kiểu Mảng 1 chiều
Kiểu Mảng 1 chiềuKiểu Mảng 1 chiều
Kiểu Mảng 1 chiều
 
Slide c2 + c3
Slide   c2 + c3Slide   c2 + c3
Slide c2 + c3
 

Lý thuyết về mật mã đối xứng.docx

  • 1. Chương 1: Một số kiến thức toán học bổ trợ Chương 2: Các khái niệm cơ sở và mật mã khóa đối xứng 1. Mật mã Caesar Mã hóa Caesar là một phương pháp mã hóa đơn giản trong mật mã học, được gọi là "phép dịch chữ cái". Phương pháp này được đặt tên theo Julius Caesar, người được cho là đã sử dụng nó để gửi tin nhắn bí mật trong thời kỳ La Mã cổ đại. * Kỹ thuật mã hóa Cách thực hiện mã hóa Caesar như sau: 1. Chọn một khoá: Khoá trong trường hợp này là một số nguyên dương, thường được gọi là "bước dịch" hoặc "độ lệch". Khoá này quyết định bao nhiêu chữ cái sẽ được dịch. 2. Dịch các chữ cái: Mỗi chữ cái trong thông điệp gốc được dịch đi một số bước tương ứng với khoá đã chọn. Ví dụ, nếu chọn khoá là 3, thì 'A' sẽ được dịch thành 'D', 'B' sẽ được dịch thành 'E', và cứ như vậy. 3. Quy tắc dịch: Các chữ cái được dịch theo hình vòng tròn, nghĩa là sau khi dịch hết các chữ cái trong bảng chữ cái, nó sẽ quay lại bắt đầu từ đầu. Chẳng hạn, nếu cuối cùng đến 'Z', nó sẽ quay trở lại 'A'. 4. Bảo toàn khoảng trắng và ký tự khác: Khoảng trắng và các ký tự đặc biệt không được dịch, chúng được bảo toàn nguyên trạng. * Kỹ thuật giải mã Để giải mã một thông điệp được mã hóa Caesar, bạn sẽ thực hiện phép dịch ngược lại với cùng một khoá, đưa nó trở về dạng gốc.
  • 2. Tóm lại, mã hóa Caesar là một phương pháp đơn giản nhưng không an toàn đối với các vấn đề bảo mật cao, vì có thể dễ dàng bị giải mã bằng cách thử nghiệm tất cả các khả năng. Bản rõ (Plaintext): P = {p0, p1, p2,…, pn-1} Bản mã (Cipher): C = {c0, c1, c2,…, cn-1} Khóa (Key): K = k ( 0<k<26) Phép mã hóa (Encrypt)-E: C = (P+k)mod26 Phép giải mã (Decrypt)-E: C = (P-k)mod26 Tham khảo nguồn Caesar Cipher in Cryptography - GeeksforGeeks 2. Mật mã Playfair Mật mã Playfair là mật mã thay thế digraph thực tế đầu tiên. Sơ đồ này được phát minh vào năm 1854 bởi Charles Wheatstone nhưng được đặt theo tên của Lord Playfair, người đã thúc đẩy việc sử dụng mật mã. Nó được sử dụng cho các mục đích chiến thuật của các lực lượng Anh trong Chiến tranh Boer lần thứ hai và trong Thế chiến I và cho cùng một mục đích của người Úc trong Thế chiến II. Điều này là do Playfair sử dụng khá nhanh và không yêu cầu thiết bị đặc biệt. * Kỹ thuật mã hóa Trong mật mã playfair không giống như mật mã truyền thống, chúng tôi mã hóa một cặp bảng chữ cái (digraph) thay vì một bảng chữ cái duy nhất. Phương pháp này dựa trên việc sử dụng một bảng chứa các chữ cái để mã hóa và giải mã thông điệp. Cụ thể, quy trình mã hóa Playfair được thực hiện như sau: 1. Tạo bảng Playfair: Hình vuông khóa là một lưới bảng chữ cái 5×5 hoạt động như chìa khóa để mã hóa bản rõ. Mỗi bảng chữ cái trong số 25 bảng chữ cái phải là duy nhất và một chữ cái của bảng chữ cái (thường là J) bị bỏ qua khỏi bảng (vì bảng chỉ có thể chứa 25 bảng chữ cái). Nếu bản rõ chứa J, thì nó được thay thế bằng I. Bảng này được tạo ra từ một khẩu điển (keyword) được chọn bởi người mã hóa. Các chữ cái trong khẩu điển không được lặp lại và viết hoa. Các chữ cái của bảng Playfair được điền vào từ trái qua phải, từ trên xuống dưới, bỏ qua các chữ cái đã xuất hiện trong khẩu điển. Ví dụ: Nếu khẩu điển là "KEYWORD", bảng Playfair sẽ có dạng: K E Y W O
  • 3. R D A B C F G H I L M N P Q S T U V X Z 2. Chia thông điệp thành các cặp chữ cái: Bước này thực hiện trước khi mã hóa. Nếu trong cặp chữ cái có hai chữ giống nhau hoặc bị trùng, chèn một chữ "X" ở giữa. Ví dụ: Nếu thông điệp là "HELLO WORLD", ta sẽ có "HE LX LO WO RL DX". 3. Mã hóa từng cặp chữ cái: Với mỗi cặp chữ cái, ta thực hiện các bước sau:  Nếu cặp cùng một hàng trên bảng Playfair, thì thay thế mỗi chữ cái bằng chữ cái phía bên phải của nó. Nếu ở cuối hàng, chuyển đến chữ cái đầu.  Nếu cặp cùng một cột trên bảng Playfair, thì thay thế mỗi chữ cái bằng chữ cái phía dưới của nó. Nếu ở cuối cột, chuyển đến chữ cái đầu.  Nếu không thuộc cùng hàng hoặc cột, tạo một hình vuông ở giữa cặp chữ cái, sau đó chọn chữ cái phía đối diện. Ví dụ: Sử dụng bảng Playfair trên, cặp "HE" sẽ được mã hóa thành "GR", cặp "LX" sẽ được mã hóa thành "MN", vv. 4. Kết hợp các cặp đã mã hóa lại: Cuối cùng, ta kết hợp các cặp đã mã hóa lại thành thông điệp đã mã hóa. Mã hóa Playfair mang lại sự bảo mật tương đối vì nó sử dụng một bảng phức tạp để thay đổi các cặp chữ cái. Tuy nhiên, cũng có một số điểm yếu, ví dụ như cần phải xử lý ký tự đặc biệt như "J" trong tiếng Anh, và khái niệm về khẩu điển khá quan trọng để bảo mật thông điệp. Chẳng hạn:
  • 4. * Kỹ thuật giải mã Giải mã mật mã Playfair cũng đơn giản như thực hiện ngược lại quy trình tương tự. Người nhận có cùng khóa và có thể tạo cùng một bảng khóa, sau đó giải mã bất kỳ tin nhắn nào được thực hiện bằng khóa đó. Lưu ý: Bản mã luôn có số ký tự chẵn. Thực hiện các bước tương tự như trong kỹ thuật mã hóa. Khác nhau tại quy tắc giải mã từng cặp chữ cái trong Bước 3.
  • 5.  Nếu cả hai chữ cái nằm trong cùng một cột: Lấy chữ cái phía trên mỗi chữ cái (quay trở lại dưới cùng nếu ở trên cùng).  Nếu cả hai chữ cái nằm trong cùng một hàng: Lấy chữ cái ở bên trái của mỗi chữ cái (quay lại ngoài cùng bên phải nếu ở vị trí ngoài cùng bên trái).  Nếu cả hai quy tắc trên đều không đúng: Tạo thành một hình chữ nhật với hai chữ cái và lấy các chữ cái ở góc ngang đối diện của hình chữ nhật. Chẳng hạn: Tham khảo nguồn Mật mã Playfair với các ví dụ - GeeksforGeeks 3. Mật mã Hill Mật mã Hill là một mật mã thay thế đa dạng dựa trên đại số tuyến tính. Mỗi chữ cái được biểu thị bằng một số modulo 26. Nó được phát triển bởi nhà toán học Lester S. Hill vào năm 1929.
  • 6. Cơ bản, mật mã Hill mã hóa thông điệp bằng cách chia thành các khối con (thường là các cặp hoặc các nhóm các chữ cái), sau đó nhân chúng với một ma trận số nguyên. Mục tiêu của mật mã Hill là thay đổi tần suất xuất hiện của các ký tự để làm cho việc giải mã trở nên khó khăn. Để mã hóa một thông điệp, mỗi khối n chữ cái (được coi là vectơ n thành phần) được nhân với một ma trận n × n đảo ngược, với mô đun 26. Để giải mã thông điệp, mỗi khối được nhân với nghịch đảo của ma trận được sử dụng để mã hóa. Ví dụ: Input : Plaintext: ACT Key: GYBNQKURP Output : Ciphertext: POH * Kỹ thuật mã hóa 1. Chọn ma trận khóa (key matrix): Ma trận này phải là một ma trận vuông có nghịch đảo modular. Điều này đảm bảo rằng việc giải mã sẽ được thực hiện được. Ma trận này phải có kích thước tùy ý, nhưng thường được chọn có kích thước 2x2 hoặc 3x3. 2. Chia thông điệp thành các khối con: Thông điệp được chia thành các cặp hoặc nhóm các chữ cái. Mỗi cặp hoặc nhóm sẽ được biểu diễn bằng một vector (dưới dạng các số nguyên). 3. Nhân ma trận khóa với vector đại diện cho cặp hoặc nhóm: Kết quả của phép nhân sẽ là một vector mới. 4. Chuyển đổi vector kết quả thành các chữ cái: Các số nguyên trong vector kết quả được chuyển đổi thành các chữ cái tương ứng. Ví dụ: Chúng ta phải mã hóa thông điệp 'ACT' (n = 3). Khóa là 'GYBNQKURP' có thể được viết dưới dạng ma trận nxn:
  • 7. Thông điệp 'ACT' được viết dưới dạng vector: Vectơ được mã hóa được cho là: tương ứng với bản mã của 'POH' * Kỹ thuật giải mã Tương tự như mã hóa, khác ở bước chọn ma trận khóa thì ở đây ta cần tìm ma trận nghịch đảo của ma trận khóa. Sau đó thực hiện nhân ma Sử dụng lại ví dụ trên:
  • 8. Để giải mã thông điệp, chúng ta biến bản mã trở lại thành một vector, sau đó chỉ cần nhân với ma trận nghịch đảo của ma trận khóa (IFKVIVVMI bằng chữ cái). Nghịch đảo của ma trận được sử dụng trong ví dụ trước là: Đối với bản mã 'POH' trước đó: mang lại cho chúng tôi 'ACT'. 4. Mật mã Vigenere Mật mã Vigenere là một phương pháp mã hóa văn bản chữ cái. Nó sử dụng một hình thức thay thế đa chữ cái đơn giản. Mật mã đa chữ cái là bất kỳ mật mã nào dựa trên sự thay thế, sử dụng nhiều bảng chữ cái thay thế. Việc mã hóa văn bản gốc được thực hiện bằng cách sử dụng hình vuông Vigenère hoặc bảng Vigenère.  Bảng này bao gồm các bảng chữ cái được viết ra 26 lần trong các hàng khác nhau, mỗi bảng chữ cái dịch chuyển theo chu kỳ sang trái so với bảng chữ cái trước đó, tương ứng với 26 Mật mã Caesar có thể.  Tại các điểm khác nhau trong quá trình mã hóa, mật mã sử dụng một bảng chữ cái khác với một trong các hàng.  Bảng chữ cái được sử dụng tại mỗi điểm phụ thuộc vào một từ khóa lặp lại. Ví dụ: Input : Plaintext : GEEKSFORGEEKS
  • 9. Keyword : AYUSH Output : Ciphertext : GCYCZFMLYLEIM Để tạo khóa, từ khóa đã cho được lặp lại theo cách tròn cho đến khi nó khớp với độ dài của văn bản thuần túy. Từ khóa "AYUSH" tạo khóa "AYUSHAYUSHAYU" Văn bản thuần túy sau đó được mã hóa bằng quy trình được giải thích bên dưới. * Kỹ thuật mã hóa Chữ cái đầu tiên của bản rõ, G được ghép với A, chữ cái đầu tiên của khóa. Vì vậy, sử dụng hàng G và cột A của hình vuông Vigenère, cụ thể là G. Tương tự, đối với chữ cái thứ hai của bản rõ, chữ cái thứ hai của khóa được sử dụng, chữ cái ở hàng E và cột Y là C. Phần còn lại của bản rõ được mã hóa theo cách tương tự. Giải mã được thực hiện bằng cách đi đến hàng trong bảng tương ứng với khóa, tìm vị trí của chữ cái bản mã trong hàng này, sau đó sử dụng nhãn của cột làm bản rõ. Ví dụ: trong hàng A (từ AYUSH), bản mã G xuất hiện trong cột G, là chữ cái văn
  • 10. bản rõ đầu tiên. Tiếp theo, chúng ta đi đến hàng Y (từ AYUSH), xác định vị trí bản mã C được tìm thấy trong cột E, do đó E là chữ cái văn bản rõ thứ hai.