Nghiên cứu và xây dựng một thuật toán mã hóa thông điệp nhờ kết hợp giữa mật mã chuyển vị và mật mã VIGENERE

70 3 0
  • Loading ...
1/70 trang

Thông tin tài liệu

Ngày đăng: 15/03/2019, 09:54

Trường Đạ i học Dân lậ p Hả i Phòng Bộ giáo dục đào tạo Tr-ờng đại học dân lập hải phòng -o0o - đồ án tốt nghiệp Ngành công nghệ thông tin Hải Phßng 2015 c Anh- CT1501 Trường Đạ i học Dân l p H i Phũng Bộ giáo dục đào tạo Tr-ờng đại học dân lập hải phòng -o0o - Nghiên cứu xây dựng thuật toán hóa thông điệp nhờ kết hợp mật chuyển vị mật vigenere đồ án tốt nghiệp đại học hệ quy Ngành: Công nghƯ Th«ng tin c Anh- CT1501 Trường Đạ i học Dõn l p H i Phũng Bộ giáo dục đào tạo Tr-ờng đại học dân lập hải phòng -o0o - Nghiên cứu xây dựng thuật toán hóa thông điệp nhờ kết hợp mật chuyển vị mật vigenere đồ án tốt nghiệp đại học hệ quy Ngành: Công nghệ Thông tin Sinh viên thực hiện: Vũ Ngọc Anh Giáo viên h-ớng dẫn: TS.Hồ Văn Canh số sinh viªn: 1112101003 c Anh- CT1501 Trường Đạ i học Dân lậ p Hả i Phòng , cho em e ! năm 2015 Sinh viên c Anh- CT1501 Trường Đạ i học Dân lậ p Hả i Phòng PHẦN MỞ ĐẦU CHƢƠNG I : CÁC HỆ MẬT CỔ ĐIỂN 1.1 Mở đầu : 1.2 dịch chuyển 1.3 thay 1.4 Apphin 1.5 Vigenere 10 1.5.1 Định nghĩa: Vigenere(( P , C , K , E , D) 10 1.5.2 dụ : Cho Khóa k từ CIPHER , 10 1.6 Hill 12 1.7 chuyển vị 14 1.7.1 Định nghĩa 14 1.7.2 dụ : 15 CHƢƠNG : Hệ mật 18 18 18 2.1.2 Phƣơng pháp hóa : 18 2.1.3 Phƣơng pháp giải : 19 2.1.4 Phân tích,đánh giá : 20 2.2 23 2.2.1 Định nghĩa : 23 2.2.2 Phương pháp hóa 23 2.2.3 Phương pháp giải 24 2.2.4 Phân tích , đánh giá 26 27 3.1 Sự kết hợp hai chuyển vị Vigenere 27 3.1.1 Lý thuyết : 27 c Anh- CT1501 Trường Đạ i học Dân lậ p Hả i Phòng 3.1.2 hóa .27 3.1.3 Giải 27 3.2 Chƣơng trình Demo 28 3.3 nguồn 30 62 63 64 c Anh- CT1501 Trường Đạ i học Dân lậ p Hả i Phòng PHẦN MỞ ĐẦU Các hệ mật cổ điển dạng hệ mật khóa đối xứng khóa đối xứng dùng để hệ đó, biết khóa lập ta tìm khóa giải cách dễ dàng (vì người ta thường coi chúng một), đồng thời việc giải đòi hỏi thời gian việc lập Các hệ thuộc loại có thời gian lập giải tương đối nhanh hệ đối xứng thường sử dụng để hóa liệu lớn Nhưng hệ đối xứng yêu cầu phải giữ bí mật hồn tồn khóa lập Nếu đối phương biết khóa lập coi thất bại Sau em xin giới thiệu đôi nét việc cần thiết để hóa thơng tin: Hiện tin học áp dụng vào hầu hết lĩnh vực sống có ảnh hưởng lớn tồn phát triển ngành khoa học khác Trong hệ thống tin học, thông tin thành phần quan trọng Chúng ta không không gặp phải trường hợp máy tính bị hết thông tin quan trọng nhiều nguyên nhân khác bị virus, bị hư hỏng thiết bị, khơng biết sử dụng, bị đánh cắp hay xố thơng tin… Nói chung vấn đề an tồn bảo mật thông tin đa dạng phụ thuộc vào nhiều yếu tố chủ quan khách quan khác như: người, mơi trường, cơng nghệ… Hiện có nhiều cơng cụ phần mềm hỗ trợ an tồn cho hệ thống máy tính Tuy nhiên vấn đề đánh giá chọn lựa hệ thống an toàn phức tạp mang tính tương đối hệ thống đánh giá an toàn hơm khơng an tồn vào ngày mai Nếu thường xuyên theo dõi thơng tin bảo mật Internet, thấy thông tin lỗ hổng bảo mật hệ điều hành, phần mềm bảo mật, dịch vụ… an tồn bảo mật thơng tin thành phần quan trọng cần quan tâm việc trì phát triển hệ thống SVTH: Vũ Ngọc Anh- CT1501 Trang Trường Đạ i học Dân lậ p Hả i Phòng Mật vấn đề an tồn thơng tin ? Mật (Cipher) xuất cách khoảng 4000 năm Ai cập Khi chiến tranh xẩy đế chế Thông tin bên A dạng chữ (letter), chữ số (number) hay loại trước gửi hố Bên B nhận thơng tin hoá thực việc giải để hiểu nội dung Một người lấy khó hiểu nội dung thơng tin có A B có cách giải Thời kì thơng tin bảo mật phương pháp khác nhau, hay gọi hệ mật cổ điển Các hệ mật sớm biết đến mật Ceazar - dich chuyển (Shift Cipher), (Substitution Cipher)… Các hệ mật sử dụng thời gian dài Cho đến toán học phát triển Các hệ xây dựng lý thuyết toán học đại Một hệ mật xây dựng dựa độ phức tạp tính tốn, hệ mật gọi hệ đại Các ứng dụng hệ mật ngày áp dụng nhiều lĩnh vực xã hội Giúp giải quết hàng loạt vấn đề an tồn thơng tin kênh thơng tin khơng bảo mật Mật cung cấp giải pháp nhằm mục đích thực biến thơng tin cụ thể dễ hiểu thành dạng khác (khó hiểu) có quan hệ chặt chẽ với thông tin gốc Giờ ta gọi thơng tin chưa hố (tường minh) “bản rõ”, thơng tin sau hố “bản mã” Vậy mật ? Tại lại bảo vệ đươc bí mật thơng tin ? Cơ sở ? Định nghĩa : Mật học nghiên cứu phương pháp tốn học liên quan đến số khía cạnh thơng tin an tồn, tồn vẹn liệu, xác nhận tồn xác nhận tính ngun thơng tin Sau em xin giới thiệu mật cổ điển : SVTH: Vũ Ngọc Anh- CT1501 Trang Trường Đạ i học Dân lậ p Hả i Phòng CHƢƠNG I : CÁC HỆ MẬT CỔ ĐIỂN 1.1 Mở đầu : Mong muốn trao đổi thơng tin cách bí mật đòi hỏi người xuất từ sớm lịch sử lịch sử việc trao đổi thông tin mật phong phú bao gồm phát minh độc đáo mang đầy tính giai thoại Ngành học nghiên cứu cách thức che dầu thông tin đối tượng không mong muốn gọi mật học ( cryptography) Mật (cipher) dùng để bảo vệ bí mật thông tin thông tin truyền kênh thơng tin bảo mật thư tín ,điện thoại,mạng truyền thơng máy tính … - Người A muốn gửi cho người B văn tiếng Việt ( gọi “bản rõ” ) , muốn bảo mật A phải lập mật cho “ rõ” gọi “bản mã” gửi cho B A B có khóa mật chung, vừa để A lập “bản mã” , vừa để B giải “bản mã” thành “bản rõ” Một người khác khơng có khóa dù có lấy “bản mã” từ kênh truyền tin biến thành “bản rõ” để hiểu nội dung thông báo A gửi cho B - Các hệ mật cổ điển thực việc bảo mật dùng kháo chung cho việc lập giải mã, rõ thường dùng sở chữ tự nhiên, cụ thể ta dùng 26 chữ chữ tiếng Anh Để hiểu rõ em dùng quan niệm toán học để mơ tả hình thức Định nghĩa : Một hệ mật năm ( P , C , K , E , D) thỏa mãn điều kiện sau đây: P tập hữu hạn rõ C tập hữu hạn K tập hữu hạn khóa SVTH: Vũ Ngọc Anh- CT1501 Trang Trường Đạ i học Dân lậ p Hả i Phòng Với k ∈ K , có hàm lập ek ∈ E ,sao cho ek : P -> C, hàm giải dk ∈ D , dk : C -> P cho dk(ek(x)) = x với x ∈ P Trong thực tế , P C thường bảng chữ ( tập dãy chữ có độ dài cố định) Nếu rõ (một xâu chữ cái): x = x1x2x3…xn (xi ∈ P ), khố k ∈ K là: y = y1y2y3…yn (yi ∈ C ) Trong yi = ek(xi) (1 ≤ i ≤ n) Nhận y, biết khoá k, tìm rõ x, xi = dk(yi) Sau thay cho bảng chữ A, B, C,…,X, Y, Z ta dùng số 0, 1, 2,…, 24, 25 dùng phép toán số học theo modulo 26 để diễn tả phép biến đổi bảng chữ A B C D E F G H I J K 10 11 12 13 T U V W X O P 14 15 Q R S 16 17 18 19 L M N Y Z 20 21 22 23 24 25 1.2 dịch chuyển Kí hiệu Z m tập số nguyên từ đến (m-1), ký hiệu dùng cho vành số nguyên từ đến (m-1) với phép cộng nhân với modulo m Như vậy, bảng chữ tiếng Anh xem vành Z 26 với tương ứng kể SVTH: Vũ Ngọc Anh- CT1501 Trang Trường Đạ i học Dân lậ p Hả i Phòng } private void initComponents() { tf_vigenere = new javax.swing.JTextField(); tf_chuyenvi = new javax.swing.JTextField(); bt_giaima = new javax.swing.JButton(); bt_xoa = new javax.swing.JButton(); bt_thoat = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); ta_banma = new javax.swing.JTextArea(); jScrollPane2 = new javax.swing.JScrollPane(); ta_banro = new javax.swing.JTextArea(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Giải thông tin"); setBounds(new java.awt.Rectangle(500, 200, 0, 0)); setResizable(false); tf_vigenere.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N tf_chuyenvi.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N bt_giaima.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N bt_giaima.setForeground(new java.awt.Color(0, 0, 204)); bt_giaima.setText("Giải mã"); bt_giaima.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { SVTH: Vũ Ngọc Anh- CT1501 Trang 50 Trường Đạ i học Dân lậ p Hả i Phòng bt_giaimaActionPerformed(evt); } }); bt_xoa.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N bt_xoa.setForeground(new java.awt.Color(0, 0, 204)); bt_xoa.setText("Xóa"); bt_xoa.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bt_xoaActionPerformed(evt); } }); bt_thoat.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N bt_thoat.setForeground(new java.awt.Color(0, 0, 204)); bt_thoat.setText("Thoát"); bt_thoat.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bt_thoatActionPerformed(evt); } }); jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N jLabel1.setForeground(new java.awt.Color(0, 0, 255)); jLabel1.setText("Khóa Vigenere"); jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N jLabel2.setForeground(new java.awt.Color(0, 0, 255)); jLabel2.setText("Bản mã"); ta_banma.setColumns(20); SVTH: Vũ Ngọc Anh- CT1501 Trang 51 Trường Đạ i học Dân lậ p Hả i Phòng ta_banma.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N ta_banma.setRows(5); jScrollPane1.setViewportView(ta_banma); ta_banro.setColumns(20); ta_banro.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N ta_banro.setForeground(new java.awt.Color(204, 0, 0)); ta_banro.setRows(5); jScrollPane2.setViewportView(ta_banro); jLabel4.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N jLabel4.setForeground(new java.awt.Color(0, 0, 255)); jLabel4.setText("Bản rõ"); jLabel5.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N jLabel5.setForeground(new java.awt.Color(0, 0, 255)); jLabel5.setText("Khóa chuyển vị"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) addGroup(layout.createSequentialGroup() addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD ING) addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE) addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELAT ED) SVTH: Vũ Ngọc Anh- CT1501 Trang 52 Trường Đạ i học Dân lậ p Hả i Phòng addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE)) addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() addContainerGap() addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELAT ED) addComponent(tf_vigenere, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE)) addGroup(layout.createSequentialGroup() addContainerGap() addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELAT ED) addComponent(tf_chuyenvi, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)) addGroup(layout.createSequentialGroup() addGap(18, 18, 18) addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) addGroup(layout.createSequentialGroup() addComponent(bt_giaima) addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELA TED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) addComponent(bt_xoa, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE) addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELA TED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) SVTH: Vũ Ngọc Anh- CT1501 Trang 53 Trường Đạ i học Dân lậ p Hả i Phòng addComponent(bt_thoat, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)) addGroup(layout.createSequentialGroup() addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE) addGap(18, 18, 18) addComponent(jScrollPane2))))) addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) addGroup(layout.createSequentialGroup() addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD ING) addGroup(layout.createSequentialGroup() addContainerGap() addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)) addGroup(layout.createSequentialGroup() addGap(50, 50, 50) addComponent(jLabel2))) addGap(18, 18, 18) addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASE LINE) addComponent(tf_vigenere, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) addComponent(jLabel1)) addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 15, Short.MAX_VALUE) SVTH: Vũ Ngọc Anh- CT1501 Trang 54 Trường Đạ i học Dân lậ p Hả i Phòng addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD ING, false) addGroup(layout.createSequentialGroup() addGap(1, 1, 1) addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) addComponent(tf_chuyenvi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) addGap(28, 28, 28) addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD ING) addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) addComponent(bt_giaima) addComponent(bt_thoat)) addComponent(bt_xoa, javax.swing.GroupLayout.Alignment.TRAILING)) addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD ING) addGroup(layout.createSequentialGroup() addGap(18, 18, 18) addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)) addGroup(layout.createSequentialGroup() addGap(52, 52, 52) addComponent(jLabel4))) addGap(57, 57, 57)) ); pack(); }// SVTH: Vũ Ngọc Anh- CT1501 Trang 55 Trường Đạ i học Dân lậ p Hả i Phòng private String chuoi="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; public String getChuoi() { return chuoi; } public void setChuoi(String chuoi) { this.chuoi = chuoi; } // -public int[] mang_chiso(String s){ char[] s_s = s.toCharArray(); int[] x = new int[s.length()]; for (int i = 0; i < s.length(); i++) { x[i] = getChuoi().indexOf(s_s[i]); } return x; } // -public String chiso_chuoi(int[] a){ String s = ""; char[] chuyen_chuoi = getChuoi().toCharArray(); for (int i = 0; i < a.length; i++) { s += chuyen_chuoi[a[i]]; } return s; } // public String giaima_vigenere(String banma,String khoa){ SVTH: Vũ Ngọc Anh- CT1501 Trang 56 Trường Đạ i học Dân lậ p Hả i Phòng banma = banma.toUpperCase(); khoa = khoa.toUpperCase(); String x=""; int[] y = new int[banma.length()]; int[] k = new int[banma.length()]; int[] kq = new int[banma.length()]; y = mang_chiso(banma); k = mang_chiso(khoa); int i,j; for(i=0,j=0;i
- Xem thêm -

Xem thêm: Nghiên cứu và xây dựng một thuật toán mã hóa thông điệp nhờ kết hợp giữa mật mã chuyển vị và mật mã VIGENERE , Nghiên cứu và xây dựng một thuật toán mã hóa thông điệp nhờ kết hợp giữa mật mã chuyển vị và mật mã VIGENERE

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay