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

Viết chương trình thám mã Caesar bằng phương pháp Brute-Force (dò tìm toàn bộ)

11 2,1K 3

Đ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 11
Dung lượng 102,27 KB

Nội dung

Mã hóa dữ liệu là một quá trình mà các dữ liệu dạng văn bản gốc được chuyển thành văn bản mật mã để làm nó không thể đọc được.. Có thể chia các phương pháp mã hóa dữ liệu thành hai hệ mậ

Trang 1

GIỚI THIỆU

Mật mã học là một ngành khoa học về mã hóa dữ liệu nhằm bảo mật thông tin

Mã hóa dữ liệu là một quá trình mà các dữ liệu dạng văn bản gốc được chuyển thành văn bản mật mã để làm nó không thể đọc được Ngày nay, để đảm bảo sự an toàn và

bí mật của các thông tin quan trọng, nhạy cảm, vấn đề mã hóa dữ liệu ngày càng trở nên cấp thiết và được nhiều người quan tâm

Có thể chia các phương pháp mã hóa dữ liệu thành hai hệ mật mã cơ bản: Hệ mật mã cổ điển với các hệ mật mã như hệ mã Caesar, Affine … và hệ mật mã hiện đại với hệ mã đối xứng (DES) và hệ mã bất đối xứng (RSA) Với mỗi hệ mật mã ta

có những phương pháp thám mã tương ứng

Tuy hệ mật mã cổ điển đến nay không còn được sử dụng nhiều nhưng chính hệ mật mã này là nền tảng cho sự phát triển của mật mã hiện đại

Mặc khác, trong các tài liệu về mật mã hiện nay các phương pháp mã hóa, giải

mã, thám mã đều thực hiện trên bảng chữ cái tiếng Anh mà ít thực hiện trên bảng chữ cái tiếng Việt

Từ các lý do trên nên nhóm chúng em quyết định chọn đề tài “Viết chương

trình thám mã Caesar bằng phương pháp Brute-Force (dò tìm toàn bộ)” cho phần

bài tập của nhóm

Trang 2

A PHẦN LÝ THUYẾT

1 Khái niệm mã hóa dữ liệu và giải mã

Mã hóa dữ liệu là tiến trình che dấu dữ liệu thật (plaintext), nghĩa là chuyển dữ liệu thật thành dữ liệu không có ý nghĩa hoặc có ý nghĩa khác xa với dữ liệu thật Tiến trình đó gọi là mã hóa (encrytion) Kết quả của tiến trình gọi là bản mã (ciphertext) Từ “encrytion” được tạo ra từ “cryptography” (mật mã) xuất phát từ tiếng Hi Lạp cổ xưa “Kryptos” (Che dấu) và từ “graphia” (viết) Tiến trình mã hóa dữ liệu có thế được thực hiện bằng cách hoán vị dữ liệu thật hoặc thay thế chúng bằng

dữ liệu khác

Tiến trình ngược với tiến trình mã hóa tức là chuyển từ bản mã thành dữ liệu ban đầu gọi là giải mã

Mã hóa và giải mã là hai thành phần của mật mã học

2 Hệ mã Caesar

Trong mật mã học, mật mã Caesar (Xê da), còn gọi là mật mã dịch chuyển, là một trong những mật mã đơn giản và được biết đến nhiều nhất Hệ mã Caesar là một

hệ mã hóa thay thế đơn âm, làm việc trên bẳng chữ cái tiếng Anh 26 ký tự Đó là một dạng của mật mã thay thế, trong đó mỗi ký tự trong văn bản được thay thế bằng một

ký tự cách nó một đoạn trong bảng chữ cái để tạo thành bản mã

Ví dụ, đối với bảng mã tiếng anh (ABCDEFGHI…), nếu độ dịch là 3, A sẽ được thay bằng D, B sẽ được thay bằng E, …, W sẽ thay bằng Z, X sẽ thay bằng A, Y

sẽ thay bằng B và Z thay bằng C

Phương pháp được đặt tên theo Caesar, vị hoàng đế đã sử dụng nó thường xuyên trong công việc

Không gian bản rõ P là các từ cần được mà hóa được tạo từ bảng chữ cái A Không gian bản rỏ C là các từ đã được mã hóa

Trang 3

Để mã hóa, người ta đánh số các chữ cái từ 0  N-1 (N là tổng số phần tử của bản chữ cái) Không gian khóa K=ZN Với mỗi khóa K ∈ K hàm mã hóa và giải mã

một ký tự có số thứ tự là I sẽ được biểu diễn như sau:

a Mã hóa :

EK(i) = (i+k) mod N

b Giải mã :

DK(i) = (i-k) mod N

Trong đó:

N =26 nếu hệ mã Caesar sử dụng trên bảng chữ cái tiếng Anh (nếu sử dụng trên bảng chữ cái khác thì N sẽ thay đổi)

k : tương ứng với số thứ tự chữ cái trong bảng mã (ví dụ : a=0, b=1….)

Xét ví dụ sau:

Cho bản rõ : TOIYEUVIETNAM

Khóa k =4

Tìm bản mã?

Vậy bản mã là : YSMBYZWMIYREQ

Quá trình giải mã thì ngược lại với quá trình mã hóa

c Thám mã

Hệ Caesar là hệ mã hoá cũ và không an toàn vì không gian khoá của nó nhỏ (N =26), do đó có thể thám mã theo phương pháp vét cạn Khoá giải mã có thể tính ngay ra được từ khoá mã hoá Do chỉ có 26 khoá nên

ta có thể thử lần lượt các khoá cho đến khi tìm được khoá đúng

Ngoài ra ta có thể áp dụng phương phân tích tần số số ký tự xuất hiện trong bảng chữ cái (Áp dụng cho bảng mã dài) để thám mã Bảng dưới là tần suất hiện hiện của các ký tự trong bảng chữ cái tiếng Anh

Trang 4

e t a o i n s h r d l u c

Bảng 2.1 : Bảng tần số xuất hiện của các ký tự trong bảng chữ cái

Trang 5

B PHẦN TRIỂN KHAI

1 Phân tích yêu cầu

Yêu cầu bài toán đặt ra là viết chương trình thám mã hệ mã Caesar bằng phương pháp vét cạn Do số khóa sử dụng của hệ mã Caesar tương đối ít nên ta có thể hoàn toàn dò tìm từng trường hợp dưới sự giúp đỡ của máy tính

Ngôn ngữ lập trình sử dụng : C#

2 Các nội dung chính

Trên phần lý thuyết ta chỉ sử dụng bảng chữ cái tiếng Anh để minh họa cho hệ

mã Caesar, nhưng trong thực tế ta sử dụng bảng chữ cái tiếng Việt, các kí số, kí hiệu

để trao đổi với nhau Vì vậy ta cần định nghĩa lại bảng chữ cái như sau:

"aáàạảãăắằặẳẵâấầậẩẫbcdđeéèẹẻẽêếềệểễfghiíìịỉĩjklmnoóòọỏõôốồộổỗ ơớờợởỡpqrstuúùụủũưứừựửữvwxyýỳỵỷỹAÁÀẠẢÃĂẮẰẶẲẴÂẤẦẬẨẪBCDĐEÉÈẸẺẼÊ ẾỀỆỂỄFGHIÍÌỊỈĨJKLMNOÓÒỌỎÕÔỐỒỘỔỖƠỚỜỢỞỠPQRSTUÚÙỤỦŨƯỨỪỰỬỮVWXYÝỲỴ ỶỸ0123456789~`!@#$%^&*()-_=+[]{}|\\:;’”,<>.?/ ";

Trong chương trình ta có thể tạo ra các lớp để tiện cho việc lập trình

a Lớp xulykitu

Lớp xulykitu bao gồm các phương thức như:

Xoakhoangtrang : Dùng để xóa các khoảng trắng

b Lớp caeser

Lớp caeser bào gồm các phương thức như:

Mahoa : dùng để mã hóa ký tự theo mã hóa Caeser Giaima : dùng để giải mã ký tự theo mã hóa Caeser Thamma : dùng để thám mã

3 Chi tiết các phương thức

Phương thức xóa khoảng trắng : dùng để xóa các ký tự trắng

public string xoakhoangtrang( string chuoi)

{

Trang 6

chuoi = chuoi.Trim();

int i;

while ((i = chuoi.IndexOf(" ")) > 0)

chuoi = chuoi.Remove(i, 1);

}

Phương thức mã hóa : dùng để mã hóa một chuỗi

public string Mahoa( string s, int k)

{

char [] tam = new char [l];

int [] so = new int [l];

for ( int j =0; j<l ; j++)

for ( int i = 0; i < n; i++)

{

{

so[j] = i;

chiso = (so[j] + k) % n; tam[j] = p[chiso];

}

}

return banma;

}

Phương thức giải mã : dùng để giải mã một chuỗi

public string Giaima( string s, int k) Giải mã : Ek(I)= (i - k)mod n

{

char [] tam = new char [l];

int [] so = new int [l];

for ( int j = 0; j < l; j++)

Trang 7

for ( int i = 0; i <n; i++)

{ if (p[i] == banma[j]) {

so[j] = i; //Lấy vị trí i trên tập ký tự chiso = (so[j]+n - k) % n;

tam[j] = p[chiso]; }

}

string banro = new string (tam); //

return banro; } Phương thức thám mã : dùng để thám mã một chuỗi public void Thamma( string s, RichTextBox txtbanro) // {

char [] banma = s.ToCharArray(); int chiso;

int l = banma.Length; char [] tam = new char [l]; int [] so = new int [l]; for ( int k = 1; k < n-1; k++) {

for ( int j = 0; j < l; j++) for ( int i = 0; i < n; i++) if (p[i] == banma[j]) {

try {

so[j] = i; chiso = (so[j] + n - k) % n; tam[j] = p[chiso];

}

}

string banro = new string (tam);

txtbanro.Text += '\n' + banro.ToString()+'\n'; }

Trang 8

}

4 Chi tiết chương trình

- Form mã hóa

- Form thám mã

Trang 10

KẾT LUẬN

Qua bài tập này nhóm em đã đã được một số kết quả nhất định Bên cạnh đó cũng còn tồn tại một số mặt

Kết quả đạt được:

- Hiểu được hệ mã Caeser, biết được cách mã hóa, giải mã, thám mã

- Triển khai được chương trình trên bảng chữ cái tiếng Việt

- Chương trình chạy ổn định, giao diện dễ nhìn, dễ sử dụng

- Kết quả chương trình chính xác, đúng với kiểm chứng thực tế

Một số tồn tại:

Phương pháp thám mã bằng cách sử dụng phương pháp phân tích tần số xuất hiện các kí tự chưa được triển khai

Hướng phát triển:

Nếu có điều kiện nhóm sẽ phát triển chương trình có thể mã hóa, giải

mã, thám mã thêm các hệ mã cổ điển khác như hệ mã Affine, hệ mã Hill

Mặc dù đã cố gắng hết sức nhưng trong quá trình thực hiện các thiếu sót mắc phải là không thể tránh Nhóm em xin chân thành cảm ơn thầy Phạm Văn Tho đã nhiệt tình giảng dạy chúng em trong suốt thời gian học tập, tạo điều kiện để nhóm hoàn thành bài tập Cảm ơn các thành viên trong lớp đã trao đổi góp ý để bài tập được hoàn thiện hơn

Trang 11

MỤC LỤC Nội dung:

Ngày đăng: 30/12/2015, 20:37

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w