java文件加密解密课程设计,JAVA课程设计 --文件加密与解密_www.bisheziliao.com

3a5429672e603c333e817469066cd8b7.gifJAVA课程设计 -- 文件加密与解密

课程设计课程设计报告书报告书 课程名称课程名称 面向对象程序设计课程设计面向对象程序设计课程设计 设计题目设计题目 文件加密与解密文件加密与解密 专业班级专业班级 学学 号号 姓姓 名名 指导教师指导教师 2014 年年 6 月月 1 目录目录 1 1 设计时间设计时间 2 2 2 2 设计目的设计目的 2 2 3 3 设计任务设计任务 2 2 4 4 设计内容设计内容 2 2 4.14.1 设计要求设计要求 2 2 4.24.2 程序流程图程序流程图 3 3 4.34.3 程序解决的核心问题程序解决的核心问题 4 4 4.44.4 程序源代码程序源代码 4 4 4.54.5 程程序执行界面序执行界面 9 9 5 5 总结与展望总结与展望 1212 参考文献参考文献 1414 2 1 1 设计时间设计时间 2013 年 6 月 8 日-2013 年 6 月 14 日 2 2 设计目的设计目的 其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解, 掌握使用 Java 语言进行面向对象设计的基本方法, 提高运用面向对象知识分析实际问题、 解决实际问题的能力,提高学生的应用能力。 3 3 设计任务设计任务 面向对象程序设计是一门实践性很强的计算机专业基础课程, 课程设计是学习完该课 程后进行的一次较全面的综合练习。 4 4 设计内容设计内容 4.14.1 设计要求设计要求 加密与解密 要求采用图形用户界面,建立菜单 1给定任意一个文本文件,进行加密,生成另一个文件。 2对加密后的文件还原。 3 4.24.2 程序流程图程序流程图 4.2.1 程序流程图 4 4.34.3 程序解决的核心问程序解决的核心问题题 利用文件的输入输出流,按字符读取文件内容,把读取的内容,注意进行处理后,在 重新写入新文件,实现文件加密。用到的类FileRead,FileWrite. 添加窗体并布置面板,中间用到了,弹出对话框的事件。设计的类有,Frame,Panel, J JOptionPane。 文件选择器的载入。通过为按钮添加事件监听,来实现文件选择器的触发操作。用 到的类为JFileChooser。 自定义异常的种类,实现异常的灵活应用。适当的调整程序的终止点或者循环点。 4.44.4 程序源代码程序源代码 import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class code Frame f; Panel p1, p2; Label l1, l2; Button key, unkey,scan; TextField t1, t2; TextArea ta; String path; String FileName; public code //窗体的基本构架和面板布置 f new Frame“文件加密“; f.setLayoutnew BorderLayout; p1 new Panel; p2 new Panel; l1 new Label“选择路径“; scan new Button“浏览“; l2 new Label“密钥“; key new Button“加密“; unkey new Button“解密“; t1 new TextField30; t2 new TextField20; ta new TextArea; p1.addl1; 5 p1.addt1; p1.addscan; f.addp1, BorderLayout.NORTH; p2.addl2; p2.addt2; p2.addkey; p2.addunkey; f.addp2, BorderLayout.SOUTH; f.addta, BorderLayout.CENTER; f.pack; f.setVisibletrue; f.addWindowListenernew win; scan.addAct

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件加密解密算法(Java源码) java,file,算法,加密解密,java源码 package com.crypto.encrypt; import java.security.SecureRandom; import java.io.*; import javax.crypto.spec.DESKeySpec; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.Cipher; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; import javax.crypto.NoSuchPaddingException; import javax.crypto.BadPaddingException; import javax.crypto.IllegalBlockSizeException; import java.lang.reflect.Constructor; import java.security.spec.KeySpec; import java.lang.reflect.InvocationTargetException; public class EncryptData { private String keyfile=null; public EncryptData() { } public EncryptData(String keyfile) { this.keyfile=keyfile; } /** * 加密文件 * @param filename String 源路径 * @param filenamekey String 加密后的路径 */ public void createEncryptData(String filename,String filenamekey) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException, NoSuchPaddingException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, IOException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException, IllegalStateException, IllegalBlockSizeException, BadPaddingException, NoSuchPaddingException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, IOException { //验证keyfile if(keyfile==null || keyfile.equals("")) { throw new NullPointerException("无效的key文件路径"); } encryptData(filename,filenamekey); } /** * 加密文件 * @param filename String 原始的类文件 * @param encryptfile String 加密后的类文件 * @throws IOException * @throws InvalidKeyException * @throws NoSuchAlgorithmException * @throws InvalidKeySpecException * @throws NoSuchPaddingException * @throws NoSuchAlgorithmException * @throws BadPaddingException * @throws IllegalBlockSizeException * @throws IllegalStateException */ private void encryptData(String filename,String encryptfile) throws IOException, InvalidKeyException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException, IllegalStateException, ClassNotFoundException, SecurityException, NoSuchMethodException, InvocationTargetException, IllegalArgumentException, IllegalAccessException, InstantiationException { byte data[]=Util.readFile(filename); // 执行加密操作 byte encryptedClassData[] = getencryptData(data); // 保存加密后的文件,覆盖原有的类文件。 Util.writeFile(encryptedClassData,encryptfile); } /** * 直接获得加密数据 * @param bytes byte[] * @throws IllegalStateException * @throws IllegalBlockSizeException * @throws BadPaddingException * @throws InvalidKeyException * @throws NoSuchPaddingException * @throws InvalidKeySpecException * @throws NoSuchAlgorithmException * @throws InstantiationException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException * @throws NoSuchMethodException * @throws SecurityException * @throws ClassNotFoundException * @throws IOException * @return byte[] */ public byte[] createEncryptData(byte[] bytes) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException, InvalidKeyException, NoSuchPaddingException, InvalidKeySpecException, NoSuchAlgorithmException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException, IOException { bytes=getencryptData(bytes); return bytes; } private byte[] getencryptData(byte[] bytes) throws IOException, ClassNotFoundException, SecurityException, NoSuchMethodException, InvocationTargetException, IllegalArgumentException, IllegalAccessException, InstantiationException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, IllegalStateException { // 产生一个可信任的随机数源 SecureRandom sr = new SecureRandom(); //从密钥文件key Filename中得到密钥数据 byte[] rawKeyData = Util.readFile(keyfile); // 从原始密钥数据创建DESKeySpec对象 Class classkeyspec=Class.forName(Util.getValue("keyspec")); Constructor constructor = classkeyspec.getConstructor(new Class[]{byte[].class}); KeySpec dks = (KeySpec) constructor.newInstance(new Object[]{rawKeyData}); // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(Util.getAlgorithm()); SecretKey key = keyFactory.generateSecret(dks); // Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance(Util.getAlgorithm()); // 用密钥初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, key, sr); // 执行加密操作 bytes = cipher.doFinal(bytes); // 返回字节数组 return bytes; } /** * 设置key文件路径 * @param keyfile String */ public void setKeyFile(String keyfile) { this.keyfile=keyfile; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值