版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅客服务规范与应急处理手册
- 严寒地区医疗机构老年陪诊服务指南
- 土地评估与土地交易手册
- 木材木蜡油涂装施工与保养手册
- 城市供水排水工程承包合同协议三篇
- 公路结构物超高性能混凝土补强与修复技术规程编制说明
- 2026-2031年中国海上大件运输行业市场调查研究与发展前景研究报告
- 期末综合素养测评卷(试题)- 苏教版数学 五年级上册
- 2024年湖南民族职业学院高职单招职业适应性测试考试题库附完整答案详解【典优】
- 2027年安阳九龙山职业学院单招职业技能考试模拟试卷【培优A卷】附答案详解
- 环境监测人员持证上岗考核试题及答案2025年
- 某仪器仪表厂外协加工管控方案
- 3 b p m f公开课一等奖创新教学设计(2课时)
- 《四川省老旧小区物业服务标准》
- 信访紧急突发情况应急预案(3篇)
- 安徽省2025年公需科目三安徽农业大学测验参考答案
- DB32∕T 4972.8-2024 传染病突发公共卫生事件应急处置技术规范 第8部分:标本的采集、保存和运输
- 2024年江苏省南京市中考英语试卷真题(含答案)
- 肛裂中西医结合诊疗指南
- 麻醉患者恢复期的气道管理
- GA/T 701-2024安全防范指纹识别应用出入口控制指纹识别模块通用规范
评论
0/150
提交评论