數(shù)據(jù)庫安全實驗四_第1頁
數(shù)據(jù)庫安全實驗四_第2頁
數(shù)據(jù)庫安全實驗四_第3頁
數(shù)據(jù)庫安全實驗四_第4頁
數(shù)據(jù)庫安全實驗四_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實 驗 報 告課程名稱 數(shù)據(jù)庫安全 內(nèi) 容 數(shù)據(jù)庫加密 指導(dǎo)教師 岳 清 起止日期 2016.10.10-11.1 提交日期 2016.11.8 學 院 計算機學院 系別專業(yè) 軟件工程 學生姓名 肖慶都 班級/學號 軟工1401/2014011352成 績 _一、 實驗?zāi)康牧私鈹?shù)據(jù)庫加密的重要性,掌握MD5加密方法。二、 實驗內(nèi)容在dbsecurity數(shù)據(jù)庫中新建一表user,包含兩個字段username,password。將password字段的數(shù)據(jù)用MD5算法加密。代碼如下:主程序代碼:package test;import javax.swing.*;import java.awt.*;

2、import java.awt.event.*;import java.sql.*;import java.security.MessageDigest;public class Test extends JFrame/* * */private static final long serialVersionUID = 1L;public Test()setLayout(new GridLayout(3,1);JPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p3=new JPanel();JTextField jtf=new JText

3、Field(12);JPasswordField jpf=new JPasswordField(12);JLabel jl1=new JLabel("用戶名");JLabel jl2=new JLabel("密碼");JButton jbt_login=new JButton("登陸");JButton jbt_cancel=new JButton("取消");jbt_login.addActionListener(new ActionListener()public void actionPerformed(Ac

4、tionEvent e)Connect con=new Connect();String userName=jtf.getText().trim();char pwd=jpf.getPassword();String password=new String(pwd);Md5 md5=new Md5();String md5pwd=md5.toMD5(password);tryResultSet rs;String sql="select * from t_user"rs=con.executeQuery(sql);while(rs.next()if(userName.equ

5、als(rs.getString("t_name")if(md5.toMD5(rs.getString("t_password").substring(32).equals(md5pwd)JOptionPane.showMessageDialog(null,"登陸成功","OK",JOptionPane.INFORMATION_MESSAGE);System.out.println(rs.getString("t_password");System.out.println(md5pwd);Sys

6、tem.out.println(md5.toMD5(rs.getString("t_password").substring(32,64);break;elseJOptionPane.showMessageDialog(null,"登陸失敗","fault",JOptionPane.ERROR_MESSAGE);break;con.close();catch(Exception e1)System.err.println("錯誤為:"+e1.getMessage(););jbt_cancel.addActionLi

7、stener(new ActionListener()public void actionPerformed(ActionEvent e);/第一塊面板p1.add(jl1);p1.add(jtf);/第二塊面板p2.add(jl2);p2.add(jpf);/第三塊面板p3.add(jbt_login);p3.add(jbt_cancel);p3.setLayout(new FlowLayout();add(p1);add(p2);add(p3);public void toMD5(String plainText)try/生成實現(xiàn)指定摘要算法的MessageDigest對象。Message

8、Digest md=MessageDigest.getInstance("MD5");/使用指定的字節(jié)數(shù)組更新摘要md.update(plainText.getBytes();/通過執(zhí)行諸如填充之類的最終操作完成哈希計算。byte b =md.digest();/生成具體的md5密碼到buf數(shù)組int i;StringBuffer buf=new StringBuffer("");for(int offset=0;offset<b.length;offset+)i=boffset;if(i<0)i+=256;if(i<16)buf.ap

9、pend("0");buf.append(Integer.toHexString(i);System.out.println("32位:"+buf.toString();System.out.println("16位:"+buf.toString().substring(8,24);catch(Exception e)e.printStackTrace();public static void main(String args)Test frame=new Test();frame.setTitle("登陸");f

10、rame.setSize(300,200);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);連接數(shù)據(jù)庫的代碼:package test;import java.sql.*;public class Connect Connection con;Statement sta;String driver;String db;public Connect()driver="com.microsoft.sqlserver.j

11、dbc.SQLServerDriver"db="jdbc:sqlserver:/localhost:1433;DatabaseName=login"String username="xiaoqingdu"String pwd="woaini"tryClass.forName(driver);con=DriverManager.getConnection(db,username,pwd);sta=con.createStatement();catch(java.lang.ClassNotFoundException e)Sys

12、tem.err.println("a:+"+e.getMessage();catch (SQLException e1) System.err.println("b:" + e1.getMessage();public ResultSet executeQuery(String sql)ResultSet rs=null;tryrs=sta.executeQuery(sql);catch (SQLException e) System.err.println("d:" + e.getMessage();return rs;public

13、 void close() try sta.close();con.close(); / Finalcatch (SQLException e) System.err.println("e:" + e.getMessage();Md5算法package test;import java.security.*;public class Md5 StringBuffer buf=new StringBuffer("");public Md5()public String toMD5(String plainText)try/生成實現(xiàn)指定摘要算法的Messag

14、eDigest對象。MessageDigest md=MessageDigest.getInstance("MD5");/使用指定的字節(jié)數(shù)組更新摘要md.update(plainText.getBytes();/通過執(zhí)行諸如填充之類的最終操作完成哈希計算。byte b =md.digest();/生成具體的md5密碼到buf數(shù)組int i;for(int offset=0;offset<b.length;offset+)i=boffset;if(i<0)i+=256;if(i<16)buf.append("0");buf.append(

15、Integer.toHexString(i);catch(Exception e)e.printStackTrace();return buf.toString();測試結(jié)果:在數(shù)據(jù)庫中建立的t_user表。t_name=xiao,t_password=xiao。界面顯示:測試結(jié)果:錯誤結(jié)果:三、 實驗總結(jié)MD5(單向散列算法)的全稱是Message-Digest Algorithm 5(信息-摘要算法),經(jīng)MD2、MD3和MD4發(fā)展而來。MD5算法的使用不需要支付任何版權(quán)費用。 MD5功能: 輸入任意長度的信息,經(jīng)過處理,輸出為128位的信息(數(shù)字指紋); 不同的輸入得到的不同的結(jié)果(唯一性

16、); 根據(jù)128位的輸出結(jié)果不可能反推出輸入的信息(不可逆); MD5用途: 1、防止被篡改:1)比如發(fā)送一個電子文檔,發(fā)送前,我先得到MD5的輸出結(jié)果a。然后在對方收到電子文檔后,對方也得到一個MD5的輸出結(jié)果b。如果a與b一樣就代表中途未被篡改。2)比如我提供文件下載,為了防止不法分子在安裝程序中添加木馬,我可以在網(wǎng)站上公布由安裝文件得到的MD5輸出結(jié)果。3)SVN在檢測文件是否在CheckOut后被修改過,也是用到了MD5.2、防止直接看到明文: 現(xiàn)在很多網(wǎng)站在數(shù)據(jù)庫存儲用戶的密碼的時候都是存儲用戶密碼的MD5值。這樣就算不法分子得到數(shù)據(jù)庫的用戶密碼的MD5值,也無法知道用戶的密碼(其實這樣是不安全的,后面我會提到)。(比如在UNIX系統(tǒng)中用戶的密碼就是以MD5(或其它類似的算法)經(jīng)加密后存儲在文件系統(tǒng)中。當用戶登錄的時候,系統(tǒng)把用戶輸入的密碼計算成MD5值,然后再去和保存在文件系統(tǒng)中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統(tǒng)在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性。這不但可以避免用戶的密

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論