ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:46KB ,
资源ID:10313059      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10313059.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库安全实验四.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库安全实验四.docx

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=

3、new JTextField(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(ActionEvent e) Connect con=new Co

4、nnect(); String userName=jtf.getText().trim(); char pwd=jpf.getPassword(); String password=new String(pwd); Md5 md5=new Md5(); String md5pwd=md5.toMD5(password); try ResultSet rs; String sql=select * from t_user; rs=con.executeQuery(sql); while(rs.next() if(userName.equals(rs.getString(t_name) if(md

5、5.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); System.out.println(md5.toMD5(rs.getString(t_password).substring(32,64); break; else JOpt

6、ionPane.showMessageDialog(null,登陆失败,fault,JOptionPane.ERROR_MESSAGE); break; con.close(); catch(Exception e1) System.err.println(错误为:+e1.getMessage(); ); jbt_cancel.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) ); /第一块面板 p1.add(jl1); p1.add(jtf); /第二块面板 p2.add(jl

7、2); 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对象。 MessageDigest md=MessageDigest.getInstance(MD5); /使用指定的字节数组更新摘要 md.update(plainText.getBytes(); /通过执行诸如填充之类的最终

8、操作完成哈希计算。 byte b =md.digest(); /生成具体的md5密码到buf数组 int i; StringBuffer buf=new StringBuffer(); for(int offset=0;offsetb.length;offset+) i=boffset; if(i0) i+=256; if(i16) buf.append(0); buf.append(Integer.toHexString(i); System.out.println(32位:+buf.toString(); System.out.println(16位:+buf.toString().sub

9、string(8,24); catch(Exception e) e.printStackTrace(); public static void main(String args) Test frame=new Test(); frame.setTitle(登陆); frame.setSize(300,200); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); 连接数据库的代码:package test;import

10、java.sql.*;public class Connect Connection con; Statement sta; String driver; String db; public Connect() driver=.microsoft.sqlserver.jdbc.SQLServerDriver; db=jdbc:sqlserver:/localhost:1433;DatabaseName=login; String username=xiaoqingdu; String pwd=woaini; try Class.forName(driver); con=DriverManage

11、r.getConnection(db,username,pwd); sta=con.createStatement(); catch(java.lang.ClassNotFoundException e) System.err.println(a:+e.getMessage(); catch (SQLException e1) System.err.println(b: + e1.getMessage(); public ResultSet executeQuery(String sql) ResultSet rs=null; try rs=sta.executeQuery(sql); cat

12、ch (SQLException e) System.err.println(d: + e.getMessage(); return rs; public void close() try sta.close(); con.close(); / Final catch (SQLException e) System.err.println(e: + e.getMessage(); Md5算法package test;import java.security.*;public class Md5 StringBuffer buf=new StringBuffer(); public Md5()

13、public String toMD5(String plainText) try /生成实现指定摘要算法的MessageDigest对象。 MessageDigest md=MessageDigest.getInstance(MD5); /使用指定的字节数组更新摘要 md.update(plainText.getBytes(); /通过执行诸如填充之类的最终操作完成哈希计算。 byte b =md.digest(); /生成具体的md5密码到buf数组 int i; for(int offset=0;offsetb.length;offset+) i=boffset; if(i0) i+=2

14、56; if(i16) buf.append(0); buf.append(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功能: 输入任意长度的信息,经

15、过处理,输出为128位的信息(数字指纹); 不同的输入得到的不同的结果(唯一性); 根据128位的输出结果不可能反推出输入的信息(不可逆); MD5用途: 1、防止被篡改:1)比如发送一个电子文档,发送前,我先得到MD5的输出结果a。然后在对方收到电子文档后,对方也得到一个MD5的输出结果b。如果a与b一样就代表中途未被篡改。2)比如我提供文件下载,为了防止不法分子在安装程序中添加木马,我可以在上公布由安装文件得到的MD5输出结果。3)SVN在检测文件是否在CheckOut后被修改过,也是用到了MD5.2、防止直接看到明文: 现在很多在数据库存储用户的密码的时候都是存储用户密码的MD5值。这样

16、就算不法分子得到数据库的用户密码的MD5值,也无法知道用户的密码(其实这样是不安全的,后面我会提到)。(比如在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。) 3、防止抵赖(数字签名): 这需要一个第三方认证机构。例如A写了一个文件,认证机构对此文件用MD5算法产生摘要信息并做好记录。若以后A说这文件不是他写的,权威机构只需对此文件重新产生摘要信息,然后跟记录在册的摘要信息进行比对,相同的话,就证明是A写的了。这就是所谓的“数字签名”。对于目前网上出现的MD5解密。那些是通过大量的数据库进行存储大量的信息。输入md5加密后的密文,其实就跟查字典类似。一个一个的进行匹对。真正意义的破解并没有出现。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1