TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới) TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới) TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới) TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới) TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới)
ĐỒ ÁN TÌM HIỂU VÀ MƠ PHỎNG CÁC KỸ THUẬT MÃ HÓA SUBSTITUTION VÀ DES MỤC L DANH MỤC CÁC HÌNH VẼ V DANH MỤC CÁC BẢNG BIỂU .VI DANH MỤC CÁC TỪ VIẾT TẮT CHƯƠNG GIỚI THIỆU ĐỀ TÀI 1.1 TỔNG QUAN 1.2 YÊU CẦU ĐỀ TÀI .1 CHƯƠNG TỔNG QUAN VỀ CÁC KỸ THUẬT MÃ HÓA .2 2.1 KHÁI NIỆM CƠ BẢN VỀ MẬT MÃ .2 2.2 PHÂN LOẠI CÁC KỸ THUẬT MÃ HÓA 2.3 KỸ THUẬT MÃ HÓA CỔ ĐIỂN: SUBSTITUTION 2.4 KỸ THUẬT MÃ HÓA HIỆN ĐẠI: DES 2.4.1 Hoán vị khởi tạo hoán vị kết thúc 2.4.2 Các vòng DES .8 2.4.3 Thuật tốn sinh khóa DES 10 2.4.4 Hiệu ứng lan truyền (Avalanche Effect) .11 2.4.5 Độ an toàn DES 14 2.5 MỘT SỐ ỨNG DỤNG CỦA MÃ HÓA TRONG SECURITY .15 CHƯƠNG KHẢO SÁT VÀ THIẾT KẾ 16 3.1 KHẢO SÁT TÍNH TỐN CÁC KỸ THUẬT MÃ HÓA .16 3.1.1 Kỹ thuật mã hóa Substitution .16 3.1.2 Kỹ thuật mã hóa DES 16 3.2 THIẾT KẾ GIAO DIỆN HIỂN THỊ 20 CHƯƠNG KẾT QUẢ THỰC HIỆN 21 4.1 KẾT QUẢ MÔ PHỎNG VỚI MÃ DES 21 4.2 KẾT QUẢ MÔ PHỎNG VỚI MÃ HÓA SUBSTITUTION 22 CHƯƠNG KẾT LUẬN 23 5.1 KẾT LUẬN .23 5.2 HƯỚNG PHÁT TRIỂN .23 TÀI LIỆU THAM KHẢO 24 PHỤ LỤC A…………… 25 Y DANH MỤC CÁC HÌNH VẼ HÌNH 2-1: CÁC VỊNG FEISTEL CỦA MÃ DES HÌNH 2-2: CẤU TRÚC MỘT VÒNG CỦA MÃ DES HÌNH 2-3: SƠ ĐỒ S-BOXES .9 HÌNH 3-1: GIAO DIỆN GUIDE MƠ PHỎNG .20 HÌNH 4-1: GIAO DIỆN GUIDE CHO KẾT QUẢ MÃ HÓA DES .21 HÌNH 4-2: GIAO DIỆN GUIDE CHO KẾT QUẢ MÃ HĨA SUBSTITUTION .22 DANH MỤC CÁC BẢNG BIỂU BẢNG 2-1: HIỆU ỨNG LAN TRUYỀN…………………………………………….13 DANH MỤC CÁC TỪ VIẾT TẮT DES Data Encryption Sandard Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 1/32 CHƯƠNG GIỚI THIỆU ĐỀ TÀI 1.1 Tổng quan Ngày hoạt động người thơng tin đóng vai trò quan trọng khơng thể thiếu Xã hội phát triển nhu cầu trao đổi thông tin thành phần xã hội ngày lớn Mạng máy tính đời mang lại cho người nhiều lợi ích việc trao đổi xử lý thơng tin cách nhanh chóng xác Chính từ thuận lợi đặt cho câu hỏi, liệu thông tin từ nơi gửi đến nơi nhận có đảm bảo tuyệt đối an tồn, đảm bảm thông tin ta không bị truy cập bất hợp pháp Thông tin lưu giữ, truyền dẫn, sử dụng mạng lưới thơng tin cơng cộng bị nghe trộm, chiếm đoạt, xuyên tạc phá huỷ dẫn đến tổn thất lường Đặc biệt số liệu hệ thống ngân hàng, hệ thống thương mại, quan quản lý phủ thuộc lĩnh vực quân lưu giữ truyền dẫn mạng Nếu nhân tố an tồn mà thơng tin khơng dám đưa lên mạng hiệu suất làm việc hiệu suất lợi dụng nguồn liệu bị ảnh hưởng Trước yêu cầu cần thiết đó, việc mã hố thơng tin đảm bảo an tồn cho thơng tin nơi lưu trữ thông tin truyền mạng 1.2 Yêu cầu đề tài - Tìm hiểu kỹ thuật cipher sau: Kỹ thuật cổ điển: substitution Kỹ thuật đại: DES - Mô matlab hai kỹ thuật CHƯƠNG TỔN G QUAN VỀ Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 2/32 CÁC KỸ THUẬT MÃ HÓA 1.3 Khái niệm mật mã Kỹ thuật mật mã thông qua việc biến đổi mã hố thơng tin, biến đổi thông tin nhạy cảm, vấn đề mật thành văn tự mã hố có dạng hỗn loạn, làm cho bọn tin tặc khó lòng mà đọc hiểu được, từ đạt hai mục đích: là, làm cho bọn tin tặc làm để giải mã nên thu thơng tin có ý nghĩa chuỗi mật mã hỗn loạn đó; hai làm cho tin tặc khơng có khả làm giả thơng tin với chuỗi mật mã hỗn loạn Khoa học nghiên cứu kỹ thuật mật mã gọi mật mã học Mật mã học bao gồm hai nhánh, mật mã học lập mã mật mã học phân tích Mật mã học lập mã với ý tiến hành mã hố thơng tin để thực việc che giấu thơng tin, mật mã học phân tích ngành học nghiên cứu phân tích giải dịch mật mã Hai đối lập với nhau, lại thúc đẩy lẫn Dùng phương pháp mật mã che dấu bảo hộ thông tin mật, làm cho người chưa uỷ quyền lấy thông tin, thơng tin giấu kín gọi văn rõ, mật mã đem văn rõ biến đổi thành loại hình khác, gọi văn mật Sự biến đổi văn rõ thành văn mật gọi mã hoá bảo mật, trình người thu nhận hợp pháp khơi phục từ văn mật trở thành văn rõ gọi trình giải mã (hoặc giải mật) Người thu nhận phi pháp có ý đồ phân tích từ văn mật thành văn rõ, gọi giải dịch 1.4 Phân loại kỹ thuật mã hóa Có nhiều thuật toán mã hoá khác Từ thuật tốn cơng khai để người sử dụng áp dụng chuẩn chung cho việc mã hoá liệu; đến thuật toán mã hố khơng cơng bố Có thể phân loại thuật toán mã hoá sau: - Phân loại theo phương pháp: Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 3/32 - Mã hoá cổ điển (Classical cryptography) Mã hoá đối xứng (Symetric cryptography) Mã hoá bất đối xứng(Asymetric cryptography) Hàm băm (Hash function) Phân loại theo số lượng khố: Mã hố khố bí mật (Private-key Cryptography) Mã hố khố cơng khai (Public-key Cryptography) 1.5 Kỹ thuật mã hóa cổ điển: Substitution Xuất lịch sử, phương pháp khơng dùng khố Thuật tốn đơn giản dễ hiểu Những từ phương pháp mã hoá giúp tiếp cận với thuật toán mã hoá đối xứng sử dụng ngày Trong mã hoá cổ điển có 02 phương pháp bật là: - Mã hoá thay (Substitution Cipher): Là phương pháp mà kí tự (hay nhóm kí tự) rõ (Plaintext) thay kí tự (hay nhóm kí tự) khác để tạo mờ (Ciphertext) Bên nhận cần đảo ngược trình tự thay Ciphertext để có Plaintext ban đầu - Mã hoá hoán vị (Transposition Cipher): Bên cạnh phương pháp mã hố thay mã hố cổ điển có phương pháp khác tiếng không kém, mã hố hốn vị Nếu phương pháp mã hố thay thế, kí tự Plaintext thay hồn tồn kí tự Ciphertext, phương pháp mã hố hốn vị, kí tự Plaintext giữ nguyên, chúng xếp lại vị trí để tạo Ciphertext Tức kí tự Plaintext hồn tồn khơng bị thay đổi kí tự khác Mã thay mơ tả sau: Cho P = C = Z26 K chứa hoán vị 26 kí hiệu 0, 1, …,25 với hoán vị K, ta định nghĩa e(x) = (x) d(y) = -1(y) -1 hốn vị ngược Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 4/32 Nhận xét: với mã thay thế, ta có khơng gian khố tương đối lớn (mỗi khố hốn vị 26 kí hiệu 0, 1, …, 25) khó bị thám theo phương pháp tìm khóa vét cạn, chí máy tính 1.6 Kỹ thuật mã hóa đại: DES Mã DES có tính chất sau: - Là mã thuộc hệ mã Feistel gồm 16 vòng, ngồi DES có thêm - hốn vị khởi tạo trước vào vòng hốn vị khởi tạo sau vòng 16 Kích thước khối 64 bít: ví dụ tin „meetmeafterthetogaparty‟ biểu diễn theo mã ASCII mã DES mã hóa làm lần, lần chữ (64 bít): meetmeaf - tertheto - gaparty Kích thước khóa 56 bít Mỗi vòng DES dùng khóa có kích thước 48 bít trích từ khóa Hình minh họa vòng mã DES: Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 17/32 10001000 01010101 01010100 1 1 0] Chọn Key mã hóa: ‘1256984563214569’ Chuyển sang mã nhị phân với block 64 bit: k=[ 00010010 01010110 10011000 01000101 01100011 00100001 00100101 1 0 1] Lấy key chuyển qua PC-1 Chuyển qua PC-1 ta C D: KPC1= C and D PC1=[57,49,41,33,25,17,9;1,58,50,42,34,26,18;10,2,59,51,43,35,27;19,11,3, 60,52,44,36;63,55,47,39,31,23,15;7,62,54,46,38,30,22;14,6,61,53,45,37,29;21,1 3,5,28,20,12,4]; Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 18/32 K(PC1)=[ 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1] C=K_PC1(1:28)=[ 0 0 0 1 1 1 1 0 0 0 0 0] D=K_PC1(29:56)=[ 0 0 1 0 1 0 0 0 1 1] Cho C D vào dịch chuyển trái xoay vồng ta K_LS=[Cs,Ds]=[ 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1] Tiếp tục qua PC-2 ta K_LS(PC-2): PC2=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52 ,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32] K_LS(PC-2)=[ 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0] 1 1 0 Chọn chuỗi mã hóa input vào lấy từ kí tự 3364 cho qua hàm E để mở rộng từ 3248 bit: Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 19/32 E=[32, 1, 2, 3, 4, 5; 4, 5, 6, 7, 8, 9; 8, 9,10,11,12,13; 12,13,14,15,16,17; 16,17,18,19,20,21; 20,21,22,23,24,25; 24,25,26,27,28,29; 28,29,30,31,32,1]; R1=b(33:64) R_E=R1(E)=[ 1 1 1 0 0 0 0 1 1 1 0 0 1 1 1 0 1 1 0] Tiếp tục lấy R_E K_LS(PC-2) mod với ta được: R_Ki=[1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 1 1 1] Chia R_Ki thành mảng với mảng phần tử theo thứ tự chõ qua SBOX với S-box ta được: C=[C1,C2,C3,C4,C5,C6,C7,C8]=[ 0 0 1 1 0 1 0 0 1 0 1 1] Cho C qua hoán vị P ta được: P=[16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,3 0,6,22,11,4,25] R_P=C(P)=[ 1 1 1 0 0 1 0 1 0 0 1 0] Tiếp tục lấy R_P R2=b(1:32) mod với ta được: R=[ 1 0 0 0 1 1 0 1 1 0 1 1] Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 20/32 Chuyển R qua mã DEC HEX ta kết mã hóa: ‘90953B49584B65CD’ 1.9 Thiết kế giao diện hiển thị Thiết kế giao diện Guide để tiện dụng sử dụng mã hóa thơng tin qua mã hóa DES mã hóa Substitution với nhập input key riêng rõ ràng với nút Push cho mã hóa DES Push cho mã hóa Substitution để mã hóa: Hình 3- 1: Giao diện guide mơ Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 21/32 CHƯƠNG KẾT QUẢ THỰC HIỆN 1.1 Kết mô với mã DES Với input vào là: ‘AF88888888555456’ Và key là: ‘AF88888888555456’ Ta kết mã hóa hình: Hình 4- 1: Giao diện guide cho kết mã hóa DES Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 22/32 1.2 Kết mơ với mã hóa Substitution Với input vào ta kết mã hóa với giao diện: Hình 4- 2: Giao diện guide cho kết mã hóa Substitution Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 23/32 CHƯƠNG KẾT LUẬN 1.10 KẾT LUẬN : Đã hoàn thành nhiệm vụ giao Giao diện guide chạy với công thức mô 1.11 HƯỚNG PHÁT TRIỂN Phát triển giao diện mã hóa với nhiều loại mã hóa phức tạp như: AES,triple DES,… Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 24/32 TÀI LIỆU THAM KHẢO [1] https://www.mathworks.com/matlabcentral/answers/330213-can-i-get-a-desalgorithm-source-code-in-matlab [2] https://vi.wikipedia.org/wiki/DES_(m%C3%A3_h%C3%B3a) Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 25/32 PHỤ LỤC A function varargout = test2(varargin) % TEST2 MATLAB code for test2.fig % TEST2, by itself, creates a new TEST2 or raises the existing % singleton* % % H = TEST2 returns the handle to a new TEST2 or the handle to % the existing singleton* % % TEST2('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in TEST2.M with the given input arguments % % TEST2('Property','Value', ) creates a new TEST2 or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before test2_OpeningFcn gets called An % unrecognized property name or invalid value makes property application % stop All inputs are passed to test2_OpeningFcn via varargin % % *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one % instance to run (singleton)" % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help test2 % Last Modified by GUIDE v2.5 27-Oct-2017 23:00:32 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @test2_OpeningFcn, 'gui_OutputFcn', @test2_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % - Executes just before test2 is made visible function test2_OpeningFcn(hObject, eventdata, handles, varargin) Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 26/32 % % % % % This function has no output args, see OutputFcn hObject handle to figure eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA) varargin command line arguments to test2 (see VARARGIN) % Choose default command line output for test2 handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes test2 wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = test2_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in pushbutton1 function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global kitu ma phrase mahoa anh ; anh = get(handles.edit1,'string'); phrase = char(anh); for i = 1:length(phrase) tu(i) = strmatch(phrase(i),kitu,'exact'); end mahoa = char(ma(tu))'; display(mahoa); set(handles.text1,'string',mahoa); function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global kitu ma phrase mahoa anh ; kitu = [strsplit('q w e r t y u i o p a s d f g h j k l z x c v b n m Q W E R T Y U I O P A S D F G H J K L Z X C V B N M ` - = [ ] \ ; , / ~ ! @ # $ % ^ & * ( ) _ + { } | : " < > ?') ' '' ' ' ']; ma = kitu(datasample(1:numel(kitu),numel(kitu),'Replace',false)); clearvars -except kitu ma; Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 27/32 % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % - Executes during object creation, after setting all properties function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % - Executes on button press in pushbutton2 function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) anhtu=get(handles.edit2,'string'); anhthi=get(handles.edit3,'string'); M = char(anhtu); K = char(anhthi); MB=[]; for i=1:16 Mi=M(i); MBi=['0000',dec2bin(hex2dec(Mi))]; MBi=MBi(end-3:end); MBi=[str2num(MBi(1)),str2num(MBi(2)),str2num(MBi(3)),str2num(MBi(4))]; MB=[MB,MBi]; end M=MB ; KB=[]; for i=1:16 Ki=K(i); KBi=['0000',dec2bin(hex2dec(Ki))]; KBi=KBi(end-3:end); KBi=[str2num(KBi(1)),str2num(KBi(2)),str2num(KBi(3)),str2num(KBi(4))]; KB=[KB,KBi]; Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 28/32 end K=KB; E=[32, 1, 2, 3, 4, 5; 4, 5, 6, 7, 8, 9; 8, 9,10,11,12,13; 12,13,14,15,16,17; 16,17,18,19,20,21; 20,21,22,23,24,25; 24,25,26,27,28,29; 28,29,30,31,32,1]; S1=[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7; 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8; 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0; 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13]; S2=[15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10; 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5; 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15; 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9]; S3=[10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8; 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1; 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7; 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12]; S4=[7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15; 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9; 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4; 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14]; S5=[2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9; 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6; 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14; 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3]; S6=[12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11; 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8; 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6; 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13]; S7=[4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1; 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6; 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2; 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12]; S8=[13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7; 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2; 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8; 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11]; P=[16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13 ,30,6,22,11,4,25]; PC1=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3, 60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29, 21,13,5,28,20,12,4]; PC2=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,5 2,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32]; Ki=zeros(16,48); K_PC1=K(PC1); Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 29/32 C0=K_PC1(1:28); D0=K_PC1(29:56); for i=1:16 if i==1||i==2||i==9||i==16 C0=[C0(2:end),C0(1)]; D0=[D0(2:end),D0(1)]; else C0=[C0(3:end),C0(1:2)]; D0=[D0(3:end),D0(1:2)]; end K_LS=[C0,D0]; end Ki(i,:)=K_LS(PC2); L=M(1:32); R=M(33:64); for i=1:16 E0=reshape(E',1,48); R_E=R(E0); R_Ki=mod(R_E+Ki(i,:),2); B=R_Ki(1:6); x=B(1)*2+B(6)+1; y=B(2)*8+B(3)*4+B(4)*2+B(5)+1; C=['0000',dec2bin(S1(x,y))]; C=C(end-3:end); C1=[str2num(C(1)),str2num(C(2)),str2num(C(3)),str2num(C(4))]; B=R_Ki(7:12); x=B(1)*2+B(6)+1; y=B(2)*8+B(3)*4+B(4)*2+B(5)+1; C=['0000',dec2bin(S2(x,y))]; C=C(end-3:end); C2=[str2num(C(1)),str2num(C(2)),str2num(C(3)),str2num(C(4))]; B=R_Ki(13:18); x=B(1)*2+B(6)+1; y=B(2)*8+B(3)*4+B(4)*2+B(5)+1; C=['0000',dec2bin(S3(x,y))]; C=C(end-3:end); C3=[str2num(C(1)),str2num(C(2)),str2num(C(3)),str2num(C(4))]; B=R_Ki(19:24); x=B(1)*2+B(6)+1; y=B(2)*8+B(3)*4+B(4)*2+B(5)+1; C=['0000',dec2bin(S4(x,y))]; C=C(end-3:end); C4=[str2num(C(1)),str2num(C(2)),str2num(C(3)),str2num(C(4))]; B=R_Ki(25:30); x=B(1)*2+B(6)+1; y=B(2)*8+B(3)*4+B(4)*2+B(5)+1; Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 30/32 C=['0000',dec2bin(S5(x,y))]; C=C(end-3:end); C5=[str2num(C(1)),str2num(C(2)),str2num(C(3)),str2num(C(4))]; B=R_Ki(31:36); x=B(1)*2+B(6)+1; y=B(2)*8+B(3)*4+B(4)*2+B(5)+1; C=['0000',dec2bin(S6(x,y))]; C=C(end-3:end); C6=[str2num(C(1)),str2num(C(2)),str2num(C(3)),str2num(C(4))]; B=R_Ki(37:42); x=B(1)*2+B(6)+1; y=B(2)*8+B(3)*4+B(4)*2+B(5)+1; C=['0000',dec2bin(S7(x,y))]; C=C(end-3:end); C7=[str2num(C(1)),str2num(C(2)),str2num(C(3)),str2num(C(4))]; B=R_Ki(43:48); x=B(1)*2+B(6)+1; y=B(2)*8+B(3)*4+B(4)*2+B(5)+1; C=['0000',dec2bin(S8(x,y))]; C=C(end-3:end); C8=[str2num(C(1)),str2num(C(2)),str2num(C(3)),str2num(C(4))]; C=[C1,C2,C3,C4,C5,C6,C7,C8]; R_P=C(P); end TEMP=L; L=R; R=mod(TEMP+R_P,2); TEMP=L; L=R; R=TEMP; C=[L,R]; CS=[]; C=num2str(C); pos=find(C~=' '); C=C(pos); for i=1:4:61 Ci=C(i:i+3); CS=[CS,num2str(dec2hex(bin2dec(Ci)))]; end C=char(CS); set(handles.text5,'string',C); function edit2_Callback(hObject, eventdata, handles) Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 31/32 % hObject % eventdata % handles handle to edit2 (see GCBO) reserved - to be defined in a future version of MATLAB structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double % - Executes during object creation, after setting all properties function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit3_Callback(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit3 as text % str2double(get(hObject,'String')) returns contents of edit3 as a double % - Executes during object creation, after setting all properties function edit3_CreateFcn(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ... QUAN VỀ CÁC KỸ THUẬT MÃ HÓA .2 2.1 KHÁI NIỆM CƠ BẢN VỀ MẬT MÃ .2 2.2 PHÂN LOẠI CÁC KỸ THUẬT MÃ HÓA 2.3 KỸ THUẬT MÃ HÓA CỔ ĐIỂN: SUBSTITUTION 2.4 KỸ THUẬT MÃ HÓA HIỆN... matlab hai kỹ thuật CHƯƠNG TỔN G QUAN VỀ Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 2/32 CÁC KỸ THUẬT MÃ HÓA 1.3 Khái niệm mật mã Kỹ thuật mật mã thơng qua việc biến đổi mã hố thơng... mã hóa DES Tìm hiểu mơ kỹ thuật mã hóa Substitution DES ĐỒ ÁN Trang 22/32 1.2 Kết mô với mã hóa Substitution Với input vào ta kết mã hóa với giao diện: Hình 4- 2: Giao diện guide cho kết mã hóa