1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Mật mã hill trong bài toán mã hóa

21 41 0

Đ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

Nội dung

lOMoARcPSD|18034504 Đ¾I HàC QC GIA THÀNH PHà Hâ CHÍ MINH TR¯àNG Đ¾I HàC BÁCH KHOA BÁO CÁO BÀI T¾P LàN Mụn: ắI Sị TUYN TNH ị TI: MắT M HILL TRONG BÀI TỐN Mà HĨA GVHD: Th¿y Ngun Hữu Hiáp Cơ Bùi Thß Khun LàP: L13 NHĨM: 12 STT Hà VÀ TÊN Bùi Lan Quỳnh Trần Lâm Tú Quỳnh Trần Thái Quỳnh Nguyễn Quý Sinh Huỳnh Nguyễn Đāc Tài Lê Ph°ßc Tài Nguyễn Lê Thanh Tâm MSSV 2114611 2114622 2114623 2114651 2114681 2114682 2114715 0|L13_N12 lOMoARcPSD|18034504 MĀC LĀC PH¾N MỞ Đ¾U NÞI DUNG CHÍNH I/MÞT SÞ VÂN ị CắN LM Rế LIấN QUAN N M HILL 1.Mßt sß khái niám liên quan 2.Ma tr¿n khÁ nghßch vành Z27 3.Các bưác để mã hóa giÁi mã thông tin Các ví dā: II/MắT M HILL TRONG PHắN MịM MATLAB 11 1.Sơ lưÿc vß ph¿n mßm MATLAB 11 Chương trình m¿t mã Hill MATLAB 12 2.1 Cách ho¿t đßng cÿa chương trình code 12 2.2 Chương trình code MATLAB 12 2.3 Ch¿y ví dā ph¿n mßm MATLAB 15 2.4 Āng dāng cÿa m¿t mã cußc sßng 18 III/ KẾT LU¾N: 19 IV/ TÀI LIàU THAM KHÀO: 19 BÀNG ĐÁNH GIÁ HOÀN THÀNH CÔNG VIàC 20 1|L13_N12 lOMoARcPSD|18034504 PH¾N MỞ Đ¾U Mã hố Hill (đ°ợc phát minh Lester S Hill năm 1929) mật mã cổ điển cho phép mã hoá hai, hay ba, nhiều h¡n ký tự (theo lý thuyết) t¿i thái điểm Mã hoá Hill sử dụng hai lý thuyết toán hác quan tráng ngành mật mã Đ¿i Sá Tuyến Tính Sá Hác Mơ-Đun Trong báo cáo nhóm em trình bày t¿o mã giải mã phần mềm MATLAB 2|L13_N12 lOMoARcPSD|18034504 NịI DUNG CHNH I/MịT Sị VN ị CắN LÀM RÕ LIÊN QUAN ĐẾN Mà HILL 1.Mßt sß khái niám liên quan -Đßnh h°ßng cÿa thuật tốn lấy m tổ hợp tuyến tính (trên vành Z27) cÿa m ký tự chữ thông điệp gác (bản rõ), theo biến đổi thành m ký tự chữ thơng điệp đ°ợc mã hóa (bản mã) -Q trình chuyển đổi từ rõ sang mã qua khóa gái mã hóa -Q trình chuyển đổi ng°ợc l¿i gái giải mã -Khóa đ°ợc cho ma trận vng cấp n khả nghßch -Sá ngun tá nhau: Hai sá nguyên tá a b đ°ợc gái hai sá nguyên °ßc chung lßn cÿa chúng 1(UCLN (a, b) = 1) -Điều kiện cần đÿ để ma trận vuông A khả nghßch det(A) khác Khi ma trận A−1 = nghßch đảo cÿa A là: PA , vßi PA ma trận phụ hợp cÿa ma trận A det( A) 2.Ma tr¿n khÁ nghßch vành Z27 Gái A tập ma trận chìa khóa vng cấp n khả nghßch Z27 đßnh thāc cÿa ma trận A sá nguyên tá vßi 27 hay nói cách khác det(A)b UCLN [det(A),27] = 3.Các bưác để mã hóa giÁi mã thơng tin *Để mã hóa thơng tin: Đầu tiên, ta chán ma trận chìa khóa A (l mt ma trn vuụng nìn kh nghòch m ngỏi gửi ng°ái nhận biết tr°ßc L°u ý, đßnh thāc cÿa ma trận phải sá nguyên tá vßi sá 27 Tiếp theo, chuyển đo¿n tin nhắn cần gửi thành dãy sá theo bảng quy °ßc nh° sau: a b c d e f g h i j k l m 10 11 12 13 3|L13_N12 lOMoARcPSD|18034504 n o p q r s t u v w x y z _ 14 15 16 17 18 19 20 21 22 23 24 25 26 Sau đó, chia dãy sá thành nhóm n sá lập thành ma trận tin nhắn ta gái ma trận B Thực phép nhân: A B = M Ta dùng máy tính bß túi để thực phép nhân cách chia ma trận B thành ma trận có sá cột nhß h¡n 3, rãi thực phép nhân ma trận A cho ma trận Thay sá ngồi gißi h¿n [0,26] đãng d° cÿa theo moodun 27 (tāc ta chia cho 27 lấy phần d° sá d°¡ng), ta thu đ°ợc ma trận C Thay sá ma trận C vừa tìm đ°ợc kí tự bảng quy °ßc trên, ta đ°ợc thơng điệp mã hóa *GiÁi mã thông tin: Đầu tiên ng°ái nhận dùng bảng quy °ßc tìm l¿i ma trận mã hóa −1 Tiếp theo, thực phép tốn: ĉ = ý ×ÿ Ci cùng, thay sá h¿ng nằm ngồi gißi h¿n [0,26] đãng d° cÿa theo moodun 27, ta thu đ°ợc ma trận M Sử dụng bảng quy °ßc cho ma trận M, ta tìm l¿i đ°ợc thơng tin ban đầu Các ví dā: Để dễ hiểu hĂn, ta xem cỏc vớ d dòi õy: ã *Vớ dā 1: Mã hóa chữ JUST_FOR_FUN trình tự b°ßc thực nh° sau: -Tách chữ JUST_FOR_FUN thành cum có n kí tự ta chán n=3 tách thành cụm JUS, T_F, OR_, FUN - Chuyển chữ JUST_FOR_FUN d¿ng ma trận kí tự cần đ°ợc mã hóa 4|L13_N12 lOMoARcPSD|18034504 - - Ć (đ ď Đ − Ă ċ Ď − Ă đ) Ċ Theo bảng quy °ßc ta chuyển ma trận tin nhắn d¿ng ma trận M= 10 (21 19 20 15 18 21) 14 Chán ma trận chìa khóa A cần đáp āng đÿ điều kiện: ▪ Phải ma trận vuông cấp n để nhân vßi ma trận M ta có n=3 ▪ DET(A)b 0, UCLN[DET(A),27] =1 Ta chán ma trận chìa khóa ma trận A= ( −1 kiện - - - - −3 Nhân ma trận chìa khóa vßi Ma trận tin nhắn: B=A.M= 109 ( 258 −168 38 82 −50 51 120 −69 )đã đáp āng đÿ điều −5 90 215 ) −139 Thay sá ngồi gißi h¿n [0,26] ma trận B đãng d° cÿa theo modun 27 ta thu c ma trn ỵ1 =(15 21 11 24 12 12 26) 23 Ta chuyển ma trn ỵ1 v dng ch ta thu c ma trận kí tự mã ý (ċ đ ć ý Ā Ĕ Ĉ Ĉ ą Ė) ē Ta gửi cho ng°ái nhận mã AOUKADXLLIZW ma trận chìa khóa • Để giải mã ng°ái nhận thực b°ßc sau - Dùng quy °ßc tìm l¿i ma trn ỵ1 Nhõn ma trn ý1 vòi ma trn B1 : 10 ( 48 −35 47 −27 96 36 33 48 ) 40 ý1 ỵ1=C = 5|L13_N12 lOMoARcPSD|18034504 - Thay sá ngồi gißi h¿n [0,26] đãng d° cÿa theo modun 27 ta thu đ°ợc ma trận M hoàn tất việc giải mã *Ví dā : Mã hóa rõ SAVE_ME_ mật mã hill sử dụng khóa ( sau giải mã Ta có khóa K ma trận 2x2 -> n=2 ), Bản rõ SAVE_ME_ đưÿc chia làm cÿm chữ cái: SA, VE, _M, E_ Chuyển chữ SAVE_ME_ d¿ng ma trận kí tự cần đ°ợc mã hóa ( ď ý Ē ā − ĉ ā ) − Theo bảng quy °ßc ta chuyển ma trận tin nhắn d¿ng ma trận M= ( 19 22 13 ) Nhân ma trận chìa khóa vßi Ma trận tin nhắn: B=A.M= ( 22 43 37 69 39 65 ) 10 Thay sá ngồi gißi h¿n [0,26] ma trận B đãng d° cÿa theo modun 27 ta thu đ°ợc ma trận B1= ( 22 16 10 15 12 11 ) 10 Ta chuyn ma trn ỵ1 v dng ch ta thu đ°ợc ma trận kí tự mã Ta thu đ°ợc mật mã VPJOLKEJ - ( Ē Č Ć ċ Ĉ ć ā ) Ć Để giải mã, dựng bn quy òc tỡm li ma trn ỵ1 Nhõn ma trận ý−1 vßi ma trận B1 : ý−1 þ1 =C = ( −62 28 −5 −27 13 ) Thay sá ngồi gißi h¿n [0,26] đãng d° cÿa theo modun 27 ta thu đ°ợc ma trận M hoàn tất việc giải mã *Ví dā : Mã hóa rõ WE_NEED_SOME_FOOD_ hệ mã hill sử dụng khóa K BA_ABA_AA Sau giải mã thu đ°ợc • Mã hóa dịng WE_NEED_SOME_FOOD_ - Khóa K đ°ợc viết d°ßi d¿ng ma trn vuụng cp l : 6|L13_N12 lOMoARcPSD|18034504 - ỵ K=(ý _ ý ỵ ý _ ý ) = (1 ý UCLN[DET(K),27] =1 - 1) có det(K) =1 b Dùng bảng quy °ßc để chuyển đo¿n thơng tin WE_NEED_SOME_FOOD_về d¿ng ma trận vuông cấp 3: - ē M=( ā _ Ċ ā ā Ā _ ď ċ ĉ ā _ Ă ċ ċ 23 Ā) = ( _ 14 5 19 15 13 15 15 4) Ta dùng máy tính bß túi để thực phép nhân cách chia ma trận ĉ thành ma trận có sá cột nhß h¡n 3, rãi thực 51 = (33 24 ỵ1 =( 33 29 10 - 10 - - phép nhân ma trn ý cho cỏc ma trn ny ỵ = ć ĉ 23 19 43 46 18 23 = ( 1) ( 1 34 27 23) 21 14 5 19 15 13 15 15 4) Thay sá ngồi gißi hn [0,26] ma trn ỵ bng cỏc óng d cÿa theo modun 27 ta thu đ°ợc ma trận: 23 19 16 19 18 21 23) Ta chuyn ma trn ỵ1 v dng ch ta thu đ°ợc ma trận kí tự mó ( ỵ Č ď Ď Ă _ đ ă ē) Ā Ta gửi cho ng°ái nhận mã XFEFBJHWSPSRF_UGWD ma trận chìa khóa • Để giải mã, ng°ái nhận thực b°ßc sau - Dùng quy °ßc tìm l¿i ma trn ỵ1 7|L13_N12 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 Nhõn ma trn vòi ma trn ỵ1 : - −1 24 16 1) ( 23 19 23) 1 10 19 18 21 23 14 15 27 −12 = (−22 −22 −14 −48 31 ) 27 32 19 32 69 −27 Thay sá ngồi gißi h¿n [0,26] đãng d° cÿa nú theo modun ỵ1 = (1 - 27 ta thu đ°ợc ma trận M Sử dụng bảng quy °ßc cho ma trận M, ta tìm l¿i đ°ợc thơng tin ban đầu : WE_NEED_SOME_FOOD_ *Ví dā 4: Mã hóa rõ YOU ARE LOVELY mật mã hill sử dụng khóa ư1 ÷ ÷2 ÷3 ÷ ÷1 ø 2 1 1ư ÷ 3÷ 5÷ ÷ ÷ø , sau giải mã Ta có khóa K ma trận 4x4 -> n=4 Bản rõ YOU ARE LOVELY đ°ợc chia làm cụm chữ cái: YOU_, ARE_, LOVE, LY Chuyển chữ YOU_ARE_LOVELY d¿ng ma trận kí tự cần đ°ợc mã hóa ưY ÷ ÷O ÷U ÷ ÷_ ø A L Lö ÷ R O Y÷ E V _÷ ÷ _ E _ ÷ø Theo bảng quy °ßc ta chuyển ma trận tin nhắn d¿ng ma trận M = ö 25 12 12 ö ÷ ÷ ÷ 15 18 15 25 ÷ ÷ 21 22 ÷ ÷ ÷ ÷0 0÷ ø ø 8|L13_N12 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 ö 82 ÷ ÷101 ÷141 ÷ ÷118 Nhân ma trận chìa khóa vßi ma trận tin nhắn: B=A.M= ø 29 43 62 52 76 91 128 133 37ư ÷ 74÷ 111÷ ÷ 62÷ø Thay sá ngồi gißi h¿n [0,26] ma trận B đãng d° cÿa theo ư1 ÷ ÷ 20 ÷6 ÷ ÷ modun 27 ta thu đ°ợc ma trận B1= ø10 16 18 22 10 20 25 10ư ÷ 20÷ 3÷ ÷ ữứ Ta chuyn ma trn ỵ1 v dng ch ta thu đ°ợc ma trận kí tự mã ưA B V ÷ ÷T P J ÷F H T ÷ ÷J R Y ø Jư ÷ T÷ C÷ ÷ H ÷ø Ta thu đ°ợc mật mã ATFJBPHRVJTYJTCH - Để giải mã, dùng quy °ßc tìm l¿i ma trn ỵ1 Nhõn ma trn ý1 vòi ma trn B1 : ö − 218 − 154 93 − 204 ö ÷ ÷ 254 − 147 349 ÷ ÷ 366 ÷ − 33 − 22 − 27 ÷ 22 ÷ ÷ ÷ − 81 − 54 − 81 ÷ø 32 ø - ý1 ỵ1 =C = Thay th cỏc sỏ ngồi gißi h¿n [0,26] đãng d° cÿa theo modun 27 ta thu đ°ợc ma trận M hồn tất việc giải mã Ví dā : Mã hóa rõ WE_WANNA_SLEEP_ hệ mã hill sử dụng khóa K ABCB_DDA_ - Khóa K đ°ợc viết d°ßi dng ma trn vuụng cp l : ý K=(ỵ ỵ _ ý ) = (2 _ 4 1) 9|L13_N12 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 Bản rõ WE_WANNA_SLEEP_ đ°ợc chia thành cụm kí tự : WE_, WAN, NA_, SLE, EP_ Č1 ē ą 23 �㕐1 23 �㕐 [Č2 ] = [ ā ] = [ ] , [ ] = [2 1] [ ] = [19] = [ ] �㕐3 Č3 _ ē 0 Cụ thể �㕐1 =�㕘11 �㕝1 + �㕘12 �㕝2 + �㕘13 �㕝3 mod 27 = (1.23+2.5+4.0) mod 27 = 6=F �㕐2 =�㕘21 �㕝1 + �㕘22 �㕝2 + �㕘23 �㕝3 mod 27 = (2.23+0.5+0.0) mod 27 = 19=S �㕐3 =�㕘31 �㕝1 + �㕘32 �㕝2 + �㕘13 �㕝3 mod 27 = (3.23+4.5+0.0) mod 27 = 8=H T°¡ng tự: _ �㕐4 Č4 ē 23 23 [Č5 ] = [ ý ] = [ ] , [�㕐5 ] = [2 1] [ ] = [ ] = [Ă ] ď �㕐6 Č6 Ċ 14 19 14 �㕐7 Č7 Ċ Č 14 14 16 �㕐 [Č8 ] = [ ý ] = [ ] , [ ] = [2 1] [ ] = [ ] = [ý] �㕐9 Č9 _ ď 0 19 �㕐10 Č10 ď 19 �㕐 [Č11 ] = [ Ĉ ] = [12] , [ 11 ] = [2 �㕐12 Č12 ā �㕐10 Č13 ā �㕐 [Č14 ] = [Č ] = [16] , [ 11 ] = [2 �㕐12 Č15 _ 19 ą 1] [12] = [16] = [ Č ] Ĕ 24 Ć 10 1] [16] = [10] = [ Ć ] 25 ĕ Kết mã hóa là: FSH_FSPASIPXJJY *Ví dā 6: Mã hóa chữ KY_THUAT_HOA trình tự b°ßc thực nh° sau: -Tách chữ KY_THUAT_HOA thành cum có n kí tự ta chán n=3 tách thành cụm KY_, THU, AT_, HOA �㕐1 Č1 ć 11 �㕐 [Č2 ] = [ ĕ ] = [25] ; [ ] = [ �㕐3 Č3 _ −1 −3 11 ă ] [25] = [12] = [ Ĉ ] −5 Ē 22 Cụ thể �㕐1 =�㕘11 �㕝1 + �㕘12 �㕝2 + �㕘13 �㕝3 mod 27 = (1.11+2.25+3.0) mod 27 = 7=G 10 | L _ N Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 �㕐2 =�㕘21 �㕝1 + �㕘22 �㕝2 + �㕘23 �㕝3 mod 27 = (2.11+5.25+7.0) mod 27 = 12=L �㕐3 =�㕘31 �㕝1 + �㕘32 �㕝2 + �㕘13 �㕝3 mod 27 = (-1.11-3.25-5.0) mod 27 = 22=V T°¡ng tự: �㕐4 Č4 Đ 20 �㕐 [Č5 ] = [Ą ] = [ ] , [ ] = [ �㕐6 Č6 −1 đ 21 �㕐7 Č7 ý 1 �㕐 [Č8 ] = [Đ ] = [20] , [ ] = [ �㕐9 Č9 _ −1 �㕐10 Č10 Ą [Č11 ] = [ċ ] = [15] , [�㕐11 ] = [ �㕐12 Č12 −1 ý −3 −3 −3 Kết mã hóa GLVRKMNUTNQW Ď 18 20 ] [ ] = [11] = [ ć ] ĉ 13 −5 21 14 Ċ ] [20] = [21] = [đ ] −5 20 Đ 14 Ċ ] [15] = [17] = [ č ] −5 ē 23 II/M¾T Mà HILL TRONG PHắN MịM MATLAB 1.S lc vò phn mòm MATLAB • Matlab (viết tắt cÿa matrix laborary) ngôn ngữ lập trình bậc cao bán hệ, mơi tr°áng để tính tốn sá hác, trực quan lập trình • Nó cho phép thao tác vßi ma trận, vẽ biểu vßi hàm sá liệu, thực thuật toán, t¿o giao diện ng°ái dùng, bao gãm C, C++, Java Fortran; phân tích liệu, phát triển thuật tốn, t¿o kiểu mẫu āng dụng • Nó cơng cụ hỗ trợ đắc lực cho b¿n việc tính tốn, vẽ hình, vẽ biểu thơng dụng thực thi ph°¡ng pháp tính tốn • Trên tảng thuật tốn có MATLAB, ta āng dụng vào việc t¿o ch°¡ng trình mã hóa mật mã Hills (Phiên Matlab đ°ợc sử dụng: R2021b) 11 | L _ N Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 Chương trình m¿t mã Hill MATLAB 2.1 Cách ho¿t đßng cÿa chương trình code 2.2 Chương trình code MATLAB 2.2.1 Mßt sß lánh đưÿc dùng BÀN CODE Double Chuyển đổi chuỗi sang sá thập phân vßi độ xác kép (ASCII) Reshape Sửa l¿i cấu trúc cÿa ma trận (sửa l¿i sá hàng, sá cột ) Strrep Tìm kiếm thay chuỗi String Mod Thay phần d° theo modul X Char Chuyển đổi sá thập phân (ASCII) l¿i d¿ng chuỗi ký tự Inv Tính ma trận nghßch đảo cÿa ma trận X for thực lặp l¿i hay nhiều câu lệnh vßi sá lần đßnh tr°ßc 12 | L _ N Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 2.2.2 BÁn code đ¿y đÿ: clc clear all close all msg_letterfirst = input('Nhap thong diep can ma hoa: ', 's'); msg_letter = strrep(msg_letterfirst,'_','@'); N=1; i=1; j=1; disp('Ma trận chìa khóa có') R=input(sprintf('Số hàng: ')); C=input(sprintf('Số cột: ')); for i=1:R for j=1:C x(i,j)=input(sprintf('Nhập thành phần [%d][%d]=',i,j)); end end Matrix=reshape(x,R,C); K= Matrix; a_vector = double(msg_letter)-64; b_vector = reshape(a_vector,R,length(msg_letter)/R); k1_vector=K*b_vector; k2_vector=mod(k1_vector,27)+64; C2 = reshape(k2_vector,1,length(msg_letter)); C3=char(C2); C4= strrep(C3,'@','_'); fprintf('Bản mã hóa:'); disp(C4); msg_letterafter = input('Nhập thơng điệp cần giải mã: ', 's'); msg_letternext = strrep(msg_letterafter,'_','@'); Kn = inv(K); c_vector = double(msg_letternext)-64; d_vector = reshape(c_vector,R,length(msg_letter)/R); g1_vector = Kn*d_vector; g2_vector = mod(g1_vector,27)+64; D2 = reshape(g2_vector,1,length(msg_letternext)); D3 = char(D2); D4 = strrep(D3,'@','_'); fprintf('Thơng điệp nhận được:'); disp(D4); 2.2.3 Hình Ánh đo¿n code MATLAB 13 | L _ N Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 14 | L _ N Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 2.3 Ch¿y ví dā ph¿n mßm MATLAB VD: Mã hóa thơng điệp

Ngày đăng: 22/06/2023, 20:47

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN