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

Tìm hiểu về các giải thuật mã hóa cổ Điển caesar, mã bảng chữ cái Đơn, mã playfair (cơ chế hoạt Độngho vd và viết ứng dụng cho phép mã hóa

25 2 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

Định dạng
Số trang 25
Dung lượng 1,96 MB

Nội dung

Mã hóa Caesar, còn được gọi là Mật mã dịch chuyển hoặc Mật mã dịch vòng, là một phương pháp đơn giản để mã hóa thông điệp bằng cách dịch chuyển các chữ cái trong bảng chữ cái một số lượn

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG THÀNH PHỐ HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP TIỂU LUẬN

Đề tài:

TÌM HIỂU VỀ CÁC GIẢI THUẬT MÃ HÓA CỔ ĐIỂN CAESAR, MÃ BẢNG CHỮ CÁI ĐƠN, MÃ PLAYFAIR

MÃ HÓA VÀ GIẢI MÃ CÁC GIẢI THUẬT)

GVHD: Vũ Đức Thịnh Sinh viên thực hiện 2033223760_Nhiêu Hồng Phúc 2001190787_Nguyễn Quốc Hoàng Sơn

Thành phố Hồ Chí Minh, tháng 4 năm 2024

Trang 2

2.1.1 Định nghĩa Hàm Mã Hóa & Giải Mã 13

2.2 LẬP TRÌNH MÔ PHỎNG MÃ BẢNG CHỮ CÁI ĐƠN 15

2.2.1 Định nghĩa Hàm Mã Hóa & Giải Mã 15

Trang 3

3

Lời giới thiệu

Trong thời đại thông tin số ngày nay, an ninh mạng và bảo mật thông tin đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày Bắt nguồn từ nhu cầu bảo vệ thông tin cá nhân, tài chính và quốc phòng, các giải thuật mã hóa đã và đang phát triển không ngừng Tuy nhiên, để ểu sâu sắc về sự phát triển đó, hichúng ta cần nhìn ngược trở lại lịch sử để tìm hiểu về ững phương pháp mã nhhóa cổ ển đã đặt nền móng cho những công nghệ mã hóa hiện đại Đề tài này đi

sẽ tập trung vào ba giải thuật mã hóa cổ điển phổ biến: Mã Caesar, Mã Bảng Chữ Cái Đơn, và Mã Playfair

Mã Caesar, được đặt theo tên của Julius Caesar, là một trong những kỹ thuật mã hóa đơn giản nhất và cũng dễ hiểu nhất, dựa trên phương pháp thay thế, di chuyển mỗi ký tự trong bản rõ theo một số vị trí nhất định Tiếp theo, Mã Bảng Chữ Cái Đơn là một phương pháp mạnh mẽ hơn một chút, sử dụng một bảng chữ cái được xáo trộn để thay thế mỗi ký tự Cuối cùng, Mã Playfair, một phương pháp cải tiến hơn nữa, dùng một ma trận ký tự để mã hóa các cặp ký tự, mang lại khả năng bảo mật cao hơn so với hai phương pháp trước

Mục tiêu của đề tài này là không chỉ tìm hiểu về cơ chế ạt động của từng giảho i thuật mã hóa và giải mã mà còn cung cấp các ví dụ minh họa cụ ể Bên cạth nh

đó, chúng ta cũng sẽ phát triển các ứng dụng đơn giản, cho phép người dùng tự mình mã hóa và giải mã thông tin sử dụng các giải thuật này, từ đó nâng cao nhận thức và kỹ năng bảo mật thông tin cá nhân trong thời đại số

Trang 4

và cứ như vậy

Mã hóa Caesar, còn được gọi là Mật mã dịch chuyển hoặc Mật mã dịch vòng, là một phương pháp đơn giản để mã hóa thông điệp bằng cách dịch chuyển các chữ cái trong bảng chữ cái một số lượng cố định Phương pháp này được đặt tên theo Julius Caesar, một nhà lãnh đạo quân sự và chính trị gia La Mã thời cổ đại, người được cho là đã sử dụng phương pháp này để gửi các thông điệp bí mật

1.1.2 Xây dựng ma trận khóa

Để xây dựng ma trận khóa Caesar, ta có thể tạo một bảng chữ cái dịch chuyển với các hàng và cột tương ứng với bảng chữ cái Các ký tự trong hàng đầu tiên sẽ là các ký tự gốc, còn các hàng phía dưới sẽ đại diện cho các dịch chuyển tương ứng

Ví dụ, ta có thể xây dựng ma trận khóa Caesar với dịch chuyển 3 như sau:

Trang 5

5

1.1.3 Cách mã hóa

Trong ma trận trên, hàng đầu tiên đại diện cho bảng chữ cái gốc, và các hàng phía dưới đại diện cho các dịch chuyển tương ứng Ví dụ, để mã hóa một ký tự, ta tìm

ký tự gốc trong hàng đầu tiên và sử dụng ký tự ở hàng tương ứng dưới nó Ví dừa,

để mã hóa một ký tự, ta tìm ký tự gốc trong hàng đầu tiên và sử dụng ký tự ở hàng tương ứng phía dưới nó Ví dụ, để mã hóa ký tự "A" với dịch chuyển 3, ta tìm

"A" trong hàng đầu tiên và lấy ký tự ở ng thứ 2 phía dưới nó, trong trường hợhà p này là "D" Tương tự, để mã hóa ký tự "B", ta lấy ký tự ở hàng thứ 3 phía dưới

"B", và cứ ếp tục như vậti y

Lưu ý rằng ma trận khóa Caesar có thể được tạo ra với các dịch chuyển khác nhau, không nhất thiết phải là 3 Số dịch chuyển xác định mức độ các ký tự Cách thức mã hóa Caesar là dịch chuyển mỗi ký tự trong thông điệp gốc một số ợng lư

cố định trong bảng chữ cái Ví dụ, nếu số ợng dịch chuyển là 3, thì chữ "A" sẽ lưđược mã hóa thành "D", "B" thành "E", và tiếp tụ như vậy Khi đến cuối bảng c chữ cái, các ký tự sẽ ợc quay trở lại đầu bảng.đư

Ví dụ, với một thông điệp gốc là "HELLO" và số ợng dịch chuyển là 3, quá lưtrình mã hóa sẽ như sau:

"H" dịch chuyển 3 chữ cái sẽ trở thành "K"

"E" dịch chuyển 3 chữ cái sẽ trở thành "H"

"L" dịch chuyển 3 chữ cái sẽ trở thành "O"

"L" dịch chuyển 3 chữ cái sẽ trở thành "O"

"O" dịch chuyển 3 chữ cái sẽ trở thành "R"

Do đó, thông điệp đã được mã hóa sẽ là "KHOOR".bị dịch chuyển trong quá trình

mã hóa

1.1.4 Cách giải mã

Để giải mã thông điệp đã được mã hóa bằng phương pháp Caesar và trở lại thông điệp gốc, ta thực hiện ngược lại các bước của quá trình mã hóa Dưới đây là cách thực hiện giải mã Caesar:

Xác định số ợng dịch chuyển (khóa) mà bạn đã sử dụng để mã hóa thông điệlư p ban đầu

Lấy thông điệp đã mã hóa mà bạn muốn giải mã

Duyệt từng ký tự trong thông điệp đã mã hóa:

Nếu ký tự là một chữ cái trong bảng chữ cái tiếng Anh (A-Z hoặc a-z), thực hiện dịch chuyển ngược lại theo khóa:

Trang 6

Chuyển đổi ký tự thành mã Unicode tương ứng

Thực hiện dịch chuyển ngược lại bằng cách trừ số lượng dịch chuyển từ mã Unicode

Kiểm tra xem kết quả sau khi dịch chuyển có nhỏ hơn giới hạn của bảng chữ cái không Nếu nhỏ hơn, ta quay trở lại cuối của bảng chữ cái (ví dụ: A sẽ ở thành trZ)

Chuyển đổi lại mã Unicode thành ký tự tương ứng

Nếu ký tự không phải là chữ cái, giữ nguyên ký tự đó mà không thực hiện bất kỳ dịch chuyển nào

Khi đã xử lý hết tất cả các ký tự trong thông điệp đã mã hóa, ta sẽ thu được thông điệp đã giải mã

Ví dụ, để giải mã thông điệp "KHOOR" đã được mã hóa với số lượng dịch chuyển

là 3, ta thực hiện các bước sau:

Trang 7

ký tự trong thông điệp ban đầu bằng các ký tự ặc ký hiệu khác, từ đó tạo ra mộho t thông điệp mã hóa

Có nhiều hình thức mã hóa bảng chữ cái đơn khác nhau, nhưng một ví dụ ổ phbiến là Mã Morse Mã Morse sử dụng các ký hiệu dạng sóng (như âm thanh hoặc ánh sáng) để biểu thị các ký tự trong bảng chữ cái Ví dụ, trong Mã Morse, ký tự

"A" được biểu thị bằng một dạng sóng ngắn, ký tự "B" được biểu thị bằng một dạng sóng dài và ba dạng sóng ngắn liên tiếp, và tiếp tục như vậy cho các ký tự khác

Mã bảng chữ cái đơn cũng có thể ánh xạ các ký tự vào các ký tự khác trong bảng chữ cái, ví dụ như mã Caesar đã được đề cậ ở câu trước Tuy nhiên, mã bảng p chữ cái đơn không thay đổi cấu trúc của bảng chữ cái, chỉ ánh xạ mỗi ký tự vào một ký tự ặc ký hiệu tương ứng duy nhấho t

1.2.2 Cách mã hóa

Bảng chữ cái gốc: 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 Bảng chữ cái mã hóa: Z Y X W V U T S R Q P O N M L K J I H G F E D C B A Với bảng chữ cái mã hóa này, quy tắc là chữ cái A sẽ ợc mã hóa thành Z, B mã đưhóa thành Y, và cứ ếp tục như vậy Các chữ cái không thay đổi trong quá trình ti

mã hóa sẽ ữ nguyên.gi

Để mã hóa một thông điệp sử dụng mã bảng chữ cái đơn này, bạn chỉ cần thay thế mỗi ký tự trong thông điệp gốc bằng ký tự tương ứng trong bảng chữ cái mã hóa Ví dụ ể mã hóa thông điệp "HELLO", ta sẽ thay thế từng ký tự như sau:, đ

"H" sẽ ợc mã hóa thành "S".đư

"E" sẽ được mã hóa thành "V"

"L" sẽ ợc mã hóa thành "O".đư

"L" sẽ ợc mã hóa thành "O".đư

"O" sẽ ợc mã hóa thành "L".đư

Trang 8

Kết quả là thông điệp đã được mã hóa là "SVOOL"

1.2.3 Cách giải mã

Tương tự ể ải mã thông điệp đã được mã hóa bằng mã bảng chữ cái đơn, bạ, đ gi n chỉ cần thực hiện quá trình ngược lại, thay thế mỗi ký tự trong thông điệp mã hóa bằng ký tự tương ứng trong bảng chữ cái gốc

Dưới đây là cách thực hiện giải mã:

Xác định mã bảng chữ cái đơn mà bạn đã sử dụng để mã hóa thông điệp ban đầu Lấy thông điệp đã mã hóa mà bạn muốn giải mã

Duyệt từng ký tự trong thông điệp đã mã hóa:

Nếu ký tự là một chữ cái trong bảng chữ cái mã hóa, thực hiện thay thế ký tự đó bằng ký tự tương ứng trong bảng chữ cái gốc

Nếu ký tự không thuộc bảng chữ cái mã hóa, giữ nguyên ký tự đó mà không thực hiện bất kỳ thay đổi nào

Ví dụ, để ải mã thông điệp "SVOOL" đã được mã hóa bằng mã bảng chữ cái giđơn trong ví dụ trước, ta thực hiện các bước sau:

"V" sẽ ợc giải mã thành "E".đư

"O" sẽ ợc giải mã thành "L".đư

"O" sẽ ợc giải mã thành "L".đư

"L" sẽ được giải mã thành "O"

Kết quả là thông điệp đã được giải mã trở lại thành "HELLO"

Do đó, thông điệp "SVOOL" đã được giải mã trở lại thành "HELLO" bằng mã bảng chữ cái đơn

Trang 9

9

1.3 MẬT MÃ PLAYFAIR

1.3.1 Mật mã Playfair là gì?

Mật mã đa ký tự ỗi lần mã 2 ký tự liên (m tiếp nhau)

Giải thuật dựa trên một ma trận các chữ cái 5×5 được xây dựng từ một khóa (chuỗi các ký tự) Là một hệ mã hóa nhiều chữ:

Giảm bớt tương quan cấu trúc giữa bản mã và nguyên bản bằng cách mã hóa đồng thời nhiều chữ cái của nguyên bản

Phát minh bởi Charles Wheatstone vào năm 1854, lấy tên người bạn Baron Playfair Sử dụng 1 ma trận chữ cái 5x5 xây dựng trên cơ sở 1 từ khóa

Điền các chữ cái của từ khóa (bỏ các chữ trùng)

Điền nốt ma trận với các chữ khác của bảng chữ cái

1 và J chiêm cùng một ô của ma trận

1.3.2 Xây dựng ma trận khóa

Lần lượt thêm từng ký tự của khóa vào ma trận Nếu ma trận chưa đầy, thêm các

ký tự còn lại trong bảng chữ cái vào ma trận theo thứ tự A – Z I và J la xem như

1 ký tự Các ký tự trong ma trận không được trùng nhau

Phương pháp mã hóa Playfair sử dụng một bảng chữ cái 5x5 để mã hóa và giải

mã thông điệp Bảng chữ cái này được điền bằng cách sắp xếp các chữ cái của từ khóa mật khẩu mà người dùng chọn, loại bỏ các chữ cái trùng lắp và các chữ cái không được sử dụng Trong trường hợp không có đủ ữ cái để ền vào bảng ch đi5x5, ta có thể thêm các ký tự khác như "X" hoặc "Q" để hoàn thiện bảng

1.3.3 Giải thuật mã hoá

Ví dụ: với từ khóa “CRYPTO”

Ma trận khóa:

Chuẩn bị từ khóa mật khẩu: Chọn một từ ặc cụm từ không chứa các chữ cái hotrùng lặp và các ký tự không phải chữ cái Ví dụ, ta có từ khóa "CRYPTO " Tạo bảng chữ cái: Bắt đầu bằng việc tạo một bảng chữ cái 5x5 Bỏ qua chữ cái

"J" và thêm từ khóa vào bảng theo ứ tự từ trái sang phải, từ trên xuống dưới th

Ví dụ:

Trang 10

L M N Q S

Xử lý thông điệp từ khóa: Loại bỏ các chữ cái trùng lặp từ từ khóa và thay thế "J" bằng "I" (do bảng chữ cái không chứa "J")

Xây dựng ma trận khóa: Đưa các chữ cái từ từ khóa vào ma trận khóa theo thứ tự

từ trái sang phải, từ trên xuống dưới, điền vào các ô trống trong bảng chữ cái Ví

dụ, với từ khóa "CRYPTO", ma trận khóa sẽ trông như sau:

1.3.4 Giải thuậ giải mãt

Quá trình mã hóa trong mật mã Playfair được thực hiện bằng cách chia thông điệp thành các cặp chữ cái, sau đó áp dụng các quy tắc sau:

Nếu hai chữ cái nằm trên cùng một hàng trong bảng chữ cái, ta thay thế mỗi chữ cái bằng chữ cái ở bên phải của nó (vòng quanh nếu chữ cái cuối cùng trong hàng)

Nếu hai chữ cái nằm trên cùng một cột trong bảng chữ cái, ta thay thế mỗi chữ cái bằng chữ cái nằm phía dưới của nó (vòng quanh nếu chữ cái cuối cùng trong cột)

Nếu hai chữ cái nằm trên cùng một ô chéo trong bảng chữ cái, ta thay thế mỗi chữ cái bằng chữ cái nằ ở ô chéo còn lại của nó.m

Mã hóa từng cặp “2 ký tự” liên tiếp nhau Nếu 2 ký tự này giống nhau thì thêm một ký tự ‘x’ vào giữa

Để mã hóa thông điệp bằng mật mã Playfair, bạn cần có một ma trận khóa Dưới đây là các bước để thực hiện mã hóa Playfair:

Chuẩn bị thông điệp: Chuẩn bị thông điệp cần được mã hóa và chia nó thành các cặp chữ cái liên tiếp Nếu có hai chữ cái giống nhau hoặc một cặp chữ cái nằm trong cùng một ô trong ma trận khóa, bạn cầ chèn một ký tự n giả (như "X") giữa chúng

Trang 11

11

Tìm vị trí của các chữ cái trong ma trận khóa: Với mỗi cặp chữ cái trong thông điệp, tìm vị trí của chúng trong ma trận khóa

VD: balloon tách thành ba lx lo on (vì ll lx l)

Nếu dư 1 ký tự thì thêm vào ký tự ‘q’ vào cuối VD: hat ha tq

Áp dụng các quy tắc mã hóa: Sử dụng các quy tắc mã hóa Playfair để thay thế mỗi cặp chữ cái Cụ thể:

Nếu 2 ký tự nằm cùng dòng được thay thế bằng 2 ký tự tương ứng bên phải Ký

tự ở cột cuối cùng được thay bằng ký tự ở cột đầu tiên

Nếu 2 ký tự nằm cùng cột được thay thế bằng 2 ký tự bên dưới Ký tự ở hàng cuối cùng được thay thế bằng ký tự ở hàng trên cùng

Nếu 2 ký tự lập thành hình chữ ật được thay thế bằng 2 ký tự tương ứng trên nhcùng dòng ở hai góc còn lại

Ghép các cặp chữ cái đã mã hóa thành thông điệp mã hóa: Ghép các chữ cái đã được mã hóa thành các cặp chữ cái để thu được thông điệp mã hóa

Hoàn tất mã hóa: Đưa ra thông điệp đã được mã hóa

Phá mã hệ mã hóa Playfair

Trang 12

An ninh đảm bảo hơn nhiều hệ mã hóa đơn chữ Có 26 x 262 676 cặp chữ cái Giải mã: Quy trình giải mã tương tự như quá trình mã hóa, nhưng ngược lại Việc giải mã từng cặp khó khăn hơn

Cần phân tích 676 tần số ất hiện thay vì 26xu

Từng được quân đội Anh, Mỹ sử dụng rộng rãi Bản mã vẫn còn lưu lại nhiều cấu trúc của nguyên bản Vẫn có thể phá mã được vì chỉ có vài trăm cặp

Để phá mã hệ mã hóa Playfair, bạn cần có thông điệp đã được mã hóa và ma trận khóa được sử dụng để mã hóa thông điệp đó Dưới đây là các bước để phá mã hệ

mã hóa Playfair:

Chuẩn bị thông điệp đã được mã hóa: Nhận thông điệp đã được mã hóa và chia

nó thành các cặp chữ cái liên tiếp Nếu thông điệp có số ợng chữ cái lẻ, bạn có lưthể thêm một ký tự ả vào cuối (ví dụ: "X") để tạo thành cặp chữ cái.gi

Tìm vị trí của các chữ cái trong ma trận khóa: Với mỗi cặp chữ cái trong thông điệp đã mã hóa, tìm vị trí của chúng trong ma trận khóa

Áp dụng các quy tắc giải mã: Sử dụng các quy tắc ngược lại so với quy tắc mã hóa để ải mã từng cặp chữ cái Cụ gi thể:

Nếu hai chữ cái nằm trên cùng mộ hàng trong ma trận khóa, thay thế mỗi chữ t cái bằng chữ cái ở bên trái của nó (vòng quanh nếu chữ cái đầu tiên trong hàng) Nếu hai chữ cái nằm trên cùng một cột trong ma trận khóa, thay thế mỗi chữ cái bằng chữ cái nằm phía trên của nó (vòng quanh nếu chữ cái đầu tiên trong cột) Nếu hai chữ cái nằm trên cùng một ô chéo trong ma trận khóa, thay thế mỗi chữ cái bằng chữ cái nằ ở ô chéo còn lại của nó.m

Ghép các cặp chữ cái đã giải mã thành thông điệp ban đầu: Ghép các chữ cái đã được giải mã thành các cặp chữ cái và loại bỏ các ký tự ả ếu có) để thu đượgi (n c thông điệp ban đầu

Trang 13

và giải mã

2.1.1 Định nghĩa Hàm Mã Hóa & Giải Mã

public class CaesarCode

{

public static string alphabet = "abcdefghijklmnopqrstuvwxyz";

public static int Position(char ch)

// Hàm mã hoá văn bản theo mật mã chữ cái đơn

public static string Encrypt(string plaintext, int key)

Trang 14

// Hàm giải mã văn bản đã mã hoá

public static string Decrypt(string plaintext, int key)

Trang 15

2.2 LẬP TRÌNH MÔ PHỎNG MÃ BẢNG CHỮ CÁI ĐƠN

Mã Bảng Chữ Cái Đơn (Simple Substitution Cipher) là một phương pháp mã hóa

cổ điển, trong đó mỗi ký tự trong bảng chữ cái được thay thế bằng một ký tự khác, dựa trên một bảng chữ cái đã được xáo trộn Để lập trình mô phỏng này, cần xác định một bảng chữ cái đã được xáo trộn và sau đó tạo các hàm để mã hóa và giải

2.2.1 Định nghĩa Hàm Mã Hóa & Giải Mã

public class MonoalphabeticCipher

{

public static string alphabet = "abcdefghijklmnopqrstuvwxyz";

public static string cipherkey = "dilovfheakgtbyzsmwnurxpqcj";

static int Position(char ch)

Ngày đăng: 03/12/2024, 16:10

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w