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

Đ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

Bài tập môn : ATBMTT Giáo viên : Phạm Văn Tho GIỚI THIỆU Mật mã học ngành khoa học mã hóa liệu nhằm bảo mật thông tin Mã hóa liệu trình mà liệu dạng văn gốc chuyển thành văn mật mã để làm đọc Ngày nay, để đảm bảo an toàn bí mật thông tin quan trọng, nhạy cảm, vấn đề mã hóa liệu ngày trở nên cấp thiết nhiều người quan tâm Có thể chia phương pháp mã hóa liệu thành hai hệ mật mã bản: Hệ mật mã cổ điển với hệ mật mã hệ mã Caesar, Affine … hệ mật mã đại với hệ mã đối xứng (DES) hệ mã bất đối xứng (RSA) Với hệ mật mã ta có phương pháp thám mã tương ứng Tuy hệ mật mã cổ điển đến không sử dụng nhiều hệ mật mã tảng cho phát triển mật mã đại Mặc khác, tài liệu mật mã phương pháp mã hóa, giải mã, thám mã thực bảng chữ tiếng Anh mà thực bảng chữ tiếng Việt Từ lý nên nhóm chúng em định chọn đề tài “Viết chương trình thám mã Caesar phương pháp Brute-Force (dò tìm toàn bộ)” cho phần tập nhóm Nhóm : Lê Duy Tuấn – Nguyễn Thanh Vin Trang Bài tập môn : ATBMTT Giáo viên : Phạm Văn Tho A PHẦN LÝ THUYẾT Khái niệm mã hóa liệu giải mã Mã hóa liệu tiến trình che dấu liệu thật (plaintext), nghĩa chuyển liệu thật thành liệu ý nghĩa có ý nghĩa khác xa với liệu thật Tiến trình gọi mã hóa (encrytion) Kết tiến trình gọi mã (ciphertext) Từ “encrytion” tạo từ “cryptography” (mật mã) xuất phát từ tiếng Hi Lạp cổ xưa “Kryptos” (Che dấu) từ “graphia” (viết) Tiến trình mã hóa liệu thực cách hoán vị liệu thật thay chúng liệu khác Tiến trình ngược với tiến trình mã hóa tức chuyển từ mã thành liệu ban đầu gọi giải mã Mã hóa giải mã hai thành phần mật mã học Hệ mã Caesar Trong mật mã học, mật mã Caesar (Xê da), gọi mật mã dịch chuyển, mật mã đơn giản biết đến nhiều Hệ mã Caesar hệ mã hóa thay đơn âm, làm việc bẳng chữ tiếng Anh 26 ký tự Đó dạng mật mã thay thế, ký tự văn thay ký tự cách đoạn bảng chữ để tạo thành mã Ví dụ, bảng mã tiếng anh (ABCDEFGHI…), độ dịch 3, A thay D, B thay E, …, W thay Z, X thay A, Y thay B Z thay C Phương pháp đặt tên theo Caesar, vị hoàng đế sử dụng thường xuyên công việc Không gian rõ P từ cần mà hóa tạo từ bảng chữ A Không gian rỏ C từ mã hóa Nhóm : Lê Duy Tuấn – Nguyễn Thanh Vin Trang Bài tập môn : ATBMTT Giáo viên : Phạm Văn Tho Để mã hóa, người ta đánh số chữ từ  N-1 (N tổng số phần tử chữ cái) Không gian khóa K=ZN Với khóa K ∈ K hàm mã hóa giải mã ký tự có số thứ tự I biểu diễn sau: a Mã hóa : EK(i) = (i+k) mod N b Giải mã : DK(i) = (i-k) mod N Trong đó: N =26 hệ mã Caesar sử dụng bảng chữ tiếng Anh (nếu sử dụng bảng chữ khác N thay đổi) k : tương ứng với số thứ tự chữ bảng mã (ví dụ : a=0, b=1….) Xét ví dụ sau: Cho rõ : TOIYEUVIETNAM Khóa k =4 Tìm mã? Bản rỏ T O I Y E U i 19 14 23 20 (i+k) mod N 23 18 12 24 Bản mã Y S M B Y Z Vậy mã : YSMBYZWMIYREQ V 21 25 W I 12 M E I T 19 23 Y N 13 17 R A E M 12 16 Q Quá trình giải mã ngược lại với trình mã hóa c Thám mã Hệ Caesar hệ mã hoá cũ không an toàn không gian khoá nhỏ (N =26), thám mã theo phương pháp vét cạn Khoá giải mã tính từ khoá mã hoá Do có 26 khoá nên ta thử khoá tìm khoá Ngoài ta áp dụng phương phân tích tần số số ký tự xuất bảng chữ (Áp dụng cho bảng mã dài) để thám mã Bảng tần suất hiện ký tự bảng chữ tiếng Anh Nhóm : Lê Duy Tuấn – Nguyễn Thanh Vin Trang Bài tập môn : ATBMTT e 12.7 m 2.4 Giáo viên : Phạm Văn Tho t a o i n s h r d l u 9.1 8.2 7.5 6.7 6.3 6.1 4.3 2.8 w f y g p b v k x j q 2.4 2.2 2 1.9 1.5 0.8 0.2 0.2 0.1 Bảng 2.1 : Bảng tần số xuất ký tự bảng chữ Nhóm : Lê Duy Tuấn – Nguyễn Thanh Vin Trang c 2.8 z 0.1 Bài tập môn : ATBMTT Giáo viên : Phạm Văn Tho B PHẦN TRIỂN KHAI Phân tích yêu cầu Yêu cầu toán đặt viết chương trình thám mã hệ mã Caesar phương pháp vét cạn Do số khóa sử dụng hệ mã Caesar tương đối nên ta hoàn toàn dò tìm trường hợp giúp đỡ máy tính Ngôn ngữ lập trình sử dụng : C# Các nội dung Trên phần lý thuyết ta sử dụng bảng chữ tiếng Anh để minh họa cho hệ mã Caesar, thực tế ta sử dụng bảng chữ tiếng Việt, kí số, kí hiệu để trao đổi với Vì ta cần định nghĩa lại bảng chữ sau: "aáàạảãăắằặẳẵâấầậẩẫbcdđeéèẹẻẽêếềệểễfghiíìịỉĩjklmnoóòọỏõôốồộổỗ ơớờợởỡpqrstuúùụủũưứừựửữvwxyýỳỵỷỹAÁÀẠẢÃĂẮẰẶẲẴÂẤẦẬẨẪBCDĐEÉÈẸẺẼÊ ẾỀỆỂỄFGHIÍÌỊỈĨJKLMNOÓÒỌỎÕÔỐỒỘỔỖƠỚỜỢỞỠPQRSTUÚÙỤỦŨƯỨỪỰỬỮVWXYÝỲỴ ỶỸ0123456789~`!@#$%^&*()-_=+[]{}|\\:;’”,.?/ "; Trong chương trình ta tạo lớp để tiện cho việc lập trình a Lớp xulykitu Lớp xulykitu bao gồm phương thức như: Xoakhoangtrang : Dùng để xóa khoảng trắng b Lớp caeser Lớp caeser bào gồm 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ã Chi tiết phương thức Phương thức xóa khoảng trắng : dùng để xóa ký tự trắng public string xoakhoangtrang(string chuoi) { Nhóm : Lê Duy Tuấn – Nguyễn Thanh Vin Trang Bài tập môn : ATBMTT Giáo viên : Phạm Văn Tho chuoi = chuoi.Trim(); int i; while ((i = chuoi.IndexOf(" ")) > 0) chuoi = chuoi.Remove(i, 1); return (chuoi); } Phương thức mã hóa : dùng để mã hóa chuỗi public string Mahoa(string s, int k) { char[] banro = s.ToCharArray(); int chiso; int l = banro.Length; char[] tam = new char[l]; int[] so = new int[l]; for(int j =0; j

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

Từ khóa liên quan

Mục lục

  • GIỚI THIỆU

  • A. PHẦN LÝ THUYẾT

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

    • 2. Hệ mã Caesar

    • B. PHẦN TRIỂN KHAI

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

      • 2. Các nội dung chính

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

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

      • KẾT LUẬN

Tài liệu cùng người dùng

Tài liệu liên quan