




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實 驗 報 告課程名稱 數據庫安全 內 容 數據庫加密 指導教師 岳 清 起止日期 2016.10.10-11.1 提交日期 2016.11.8 學 院 計算機學院 系別專業 軟件工程 學生姓名 肖慶都 班級/學號 軟工1401/2014011352成 績 _一、 實驗目的了解數據庫加密的重要性,掌握MD5加密方法。二、 實驗內容在dbsecurity數據庫中新建一表user,包含兩個字段username,password。將password字段的數據用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/生成實現指定摘要算法的MessageDigest對象。Message
8、Digest md=MessageDigest.getInstance("MD5");/使用指定的字節數組更新摘要md.update(plainText.getBytes();/通過執行諸如填充之類的最終操作完成哈希計算。byte b =md.digest();/生成具體的md5密碼到buf數組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);連接數據庫的代碼: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/生成實現指定摘要算法的Messag
14、eDigest對象。MessageDigest md=MessageDigest.getInstance("MD5");/使用指定的字節數組更新摘要md.update(plainText.getBytes();/通過執行諸如填充之類的最終操作完成哈希計算。byte b =md.digest();/生成具體的md5密碼到buf數組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();測試結果:在數據庫中建立的t_user表。t_name=xiao,t_password=xiao。界面顯示:測試結果:錯誤結果:三、 實驗總結MD5(單向散列算法)的全稱是Message-Digest Algorithm 5(信息-摘要算法),經MD2、MD3和MD4發展而來。MD5算法的使用不需要支付任何版權費用。 MD5功能: 輸入任意長度的信息,經過處理,輸出為128位的信息(數字指紋); 不同的輸入得到的不同的結果(唯一性
16、); 根據128位的輸出結果不可能反推出輸入的信息(不可逆); MD5用途: 1、防止被篡改:1)比如發送一個電子文檔,發送前,我先得到MD5的輸出結果a。然后在對方收到電子文檔后,對方也得到一個MD5的輸出結果b。如果a與b一樣就代表中途未被篡改。2)比如我提供文件下載,為了防止不法分子在安裝程序中添加木馬,我可以在網站上公布由安裝文件得到的MD5輸出結果。3)SVN在檢測文件是否在CheckOut后被修改過,也是用到了MD5.2、防止直接看到明文: 現在很多網站在數據庫存儲用戶的密碼的時候都是存儲用戶密碼的MD5值。這樣就算不法分子得到數據庫的用戶密碼的MD5值,也無法知道用戶的密碼(其實這樣是不安全的,后面我會提到)。(比如在UNIX系統中用戶的密碼就是以MD5(或其它類似的算法)經加密后存儲在文件系統中。當用戶登錄的時候,系統把用戶輸入的密碼計算成MD5值,然后再去和保存在文件系統中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統的合法性。這不但可以避免用戶的密
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國休閑娛樂市場深度調查評估及投資方向研究報告
- 2025年 重慶省考行測考試附答案
- 2025年 新疆昌吉州招聘中學教師考試試題附答案
- 2025年中國烤鴨行業市場全景評估及發展戰略研究報告
- 2025年 內蒙古公務員考試行測筆試試題附答案
- 2025年 河南師范大學招聘助研助管人才人員考試試題附答案
- 中國化學藥品制劑制造行業市場調研及投資規劃建議報告
- 2025年中國格法玻璃行業市場調研及投資戰略規劃報告
- 2025年 楚雄市起重指揮作業證考試練習題附答案
- 2025年 白山市林業局直屬事業單位招聘考試筆試試題附答案
- 公路橋位勘測設計規范
- 各專業試驗報告氣味及
- 中國糖尿病腎臟病防治指南(2021年版)
- 計算機技術前沿總結課件
- 輸電線路風偏計算基本方法
- 馬鞍山市潔源環保有限公司馬鞍山市一般工業固廢填埋場項目重新報批環境影響報告書
- 通信線路投標文件
- 集結號觀后感 集結號觀后感500字(最全)
- (完整版)全國各省份城市明細表
- GB/T 6109.20-2008漆包圓繞組線第20部分:200級聚酰胺酰亞胺復合聚酯或聚酯亞胺漆包銅圓線
- 《社會主義核心價值觀》優秀課件
評論
0/150
提交評論