java文件的加密与解密_第1页
java文件的加密与解密_第2页
java文件的加密与解密_第3页
java文件的加密与解密_第4页
java文件的加密与解密_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计课程设计名称: Java课程设计 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 2021.6.10-2021.6.21 文件的加密与加密一、需求分析 1.根本要求: 1.实现文件的加密与解密。 2.使用GUI完成设计工作。 2.具体分析:1向图形用户界面中添加组件,其中窗口中包括四个按钮,一个文本框,一个文本区。2设置各个组件的布局,其中文本框和加添加保存按钮在最上面,文本区在中间,加解密按钮在最下面。,其中包括添加事件、保存事件、加密事件和解密事件。4. 查找读入及写入文件,并显示在文本区。,其中已加密的文件不能重复加密。,其中未加密的

2、不能解密。二、概要设计主菜单添加文件功能保存文件功能加密文件功能解密文件功能图2-1设计模块图开始添加文件弹出文件加密器对话框添加文件的内容显示在文本区加密解密加密后的内容显示在文本区解密后的内容显示在文本区点击“保存,选择路径,生成新文件,并以“.txt命名结束图2-2设计流程图三、运行环境、开发语言开发环境:JDK开发语言:java语言四、详细设计1 程序清单表1程序清单函数名功能openFile()添加文件jiamiFile()加密文件jiemiFile()解密文件saveFile()保存文件2 主要代码2.1 主窗口显示功能此局部主要是主窗口界面,显示文本框、按钮和文本区。该功能截图如

3、图图4-1。具体代码如下:Myframe(String s) super(s);final JTextField namefield = new JTextField(15);namearea = new JTextArea(20,20);JPanel panel1 = new JPanel();JPanel panel2 = new JPanel();JButton button1 = new JButton("添加文件");JButton button2 = new JButton("保存");JButton button3 = new JButto

4、n("加密");JButton button4 = new JButton("解密");panel1.add(namefield);panel1.add(button1);panel1.add(button2);panel2.add(button3);panel2.add(button4);add(namearea,"Center");add(panel1, "North");add(panel2, "South");JScrollPane scrollPane=new JScrollPane(

5、namearea);add(scrollPane);setSize(750, 600);setLocation(100, 100);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);图4-1 主界面2.2 添加文件功能单击“添加文件按钮,可以选择不通知磁盘目录下的文件.txt。文件添加后,文件内容显示在文本区中。该功能截图如图图4-2。具体代码如下:/添加事件button1.addActionListener(new ActionListener()Overridepublic void actionPerforme

6、d(ActionEvent e) if(file=null)JFileChooser chooser=new JFileChooser(".");chooser.showOpenDialog(Myframe.this);file=chooser.getSelectedFile();try openFile(); catch (IOException e1) ); /添加文件方法public void openFile() throws IOException content=""BufferedReader reader=new BufferedRead

7、er(new FileReader(file);String line=""while(line=reader.readLine()!=null)content+=(line);M=JOptionPane.showInputDialog(null,"请输入密钥密钥是1位:");if(content.toString().endsWith(M)mark=1;/已加密content=content.substring(0,content.length()-M.length();elsemark=2;/未加密reader.close();namearea.se

8、tText(content);图4-2添加文件功能2.3 加密文件功能本程序采用简单的加密算法,加密之前必须得输入密钥,判断是否加过密,让后把从文本区获得的文本文件初始化,存放到一个数组中,然后进行异或运算,把结果重新存放于该数组中,从而显现在“文件浏览窗口中。该功能截图如图图4-3、4-4。具体代码如下:图4-3输入密钥功能图4-4加密功能 解密文件功能解密操作其实同加密操作相同,依旧首先翻开加密后的文件,让后判断是否加密,使其显示在文本区中,再同样对数组里的元素进行初始化,进行异或运算,即可得到解密后的文件,再显示到“文件浏览窗口中。该功能截图如图图4-5。具体代码如下:/解密事件butt

9、on4.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) try jiemiFile(); catch (IOException e1) ); /解密public void jiemiFile() throws IOExceptionchar a=namearea.getText().toCharArray();int j=0;if(mark=1)String M1=JOptionPane.showInputDialog(null,"请输入密钥密钥是6位:&

10、quot;);if (M1.equals(M)namearea.setText(null);char secret='a'for(int i=0;i<a.length;i+)char c=(char)(secretai);/再次异或运算,即复原 namearea.append(""+c);mark=2;JOptionPane.showMessageDialog(null,"解密成功!","温馨提示",JOptionPane.WARNING_MESSAGE);elseJOptionPane.showMessageD

11、ialog(null,"密钥输入错误,请重新输入:","温馨提示",JOptionPane.WARNING_MESSAGE);elseJOptionPane.showMessageDialog(null,"此文件已经解密或者尚未加密,请重新选择!","温馨提示",MESSAGE);图4-5解密文件功能2.5 保存文件功能可以选择是否保存加密后的文本文件。因为加密后的文件先显示在文本区中,之后选择 “保存,即可弹出“保存对话框,进行查找写入文件,写入字符流,从而实现保存。该功能截图如图图4-6。具体代码如下:/保存事

12、件 button2.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) JFileChooser chooser=new JFileChooser(".");chooser.showSaveDialog(Myframe.this);file=chooser.getSelectedFile();try saveFile(); catch (IOException e1) );/保存文件public void saveFile() throws IOEx

13、ceptioncontent=namearea.getText();FileWriter out=new FileWriter(file);out.write(content);if(mark=1)out.write(M);out.close();JOptionPane.showMessageDialog(null,"保存成功!","温馨提示",JOptionPane.WARNING_MESSAGE);图4-6文件保存功能五、调试与分析.六、功能测试加密之前的:加密之后的:解密之前的:解密之后的:七、结论与心得八、参考资料 2 源代码import jav

14、a.awt.*;import java.io.*;.*;import java.awt.event.*;class Myframe extends JFrame int mark=0;String M=" "FileDialog filedialog_save, filedialog_load;JButton itemOpen, itemSave;String content=""File file=null;JTextArea namearea ;Myframe(String s) super(s);final JTextField namefield

15、 = new JTextField(15);namearea = new JTextArea(20,20);JPanel panel1 = new JPanel();JPanel panel2 = new JPanel();JButton button1 = new JButton("添加文件");JButton button2 = new JButton("保存");JButton button3 = new JButton("加密");JButton button4 = new JButton("解密");pa

16、nel1.add(namefield);panel1.add(button1);panel1.add(button2);panel2.add(button3);panel2.add(button4);add(namearea,"Center");add(panel1, "North");add(panel2, "South");JScrollPane scrollPane=new JScrollPane(namearea);add(scrollPane); /翻开事件button1.addActionListener(new Acti

17、onListener()Overridepublic void actionPerformed(ActionEvent e) if(file=null)JFileChooser chooser=new JFileChooser(".");chooser.showOpenDialog(Myframe.this);file=chooser.getSelectedFile();try openFile(); catch (IOException e1) );/保存事件 button2.addActionListener(new ActionListener()Overridepu

18、blic void actionPerformed(ActionEvent e) JFileChooser chooser=new JFileChooser(".");chooser.showSaveDialog(Myframe.this);file=chooser.getSelectedFile();try saveFile(); catch (IOException e1) );/加密事件button3.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEven

19、t e) try jiamiFile(); catch (IOException e1) );/解密事件button4.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) try jiemiFile(); catch (IOException e1) );setSize(750, 600);setLocation(100, 100);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/翻开文件

20、public void openFile() throws IOException content=""BufferedReader reader=new BufferedReader(new FileReader(file);String line=""while(line=reader.readLine()!=null)content+=(line);M=JOptionPane.showInputDialog(null,"请输入密钥密钥是1位:");if(content.toString().endsWith(M)mark=1;/

21、已加密content=content.substring(0,content.length()-M.length();elsemark=2;/未加密reader.close();namearea.setText(content);/加密public void jiamiFile() throws IOExceptioncontent=""String line=""char a=namearea.getText().toCharArray();/*把texta中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组a中*/if

22、(mark=2) M=JOptionPane.showInputDialog(null,"请输入密钥1位:");namearea.setText(null);char secret='a' for(int i=0;i<a.length;i+)char c=(char)(secretai);/进行异或运算 namearea.append(""+c);mark=1;JOptionPane.showMessageDialog(null,"加密成功!","温馨提示",JOptionPane.WARNI

23、NG_MESSAGE);elseJOptionPane.showMessageDialog(null,"此文件已经加密,请重新选择!","温馨提示",JOptionPane.WARNING_MESSAGE);/解密public void jiemiFile() throws IOExceptionchar a=namearea.getText().toCharArray();int j=0;if(mark=1)String M1=JOptionPane.showInputDialog(null,"请输入密钥密钥是6位,您有三次时机:"

24、);if (M1.equals(M)namearea.setText(null);char secret='a'for(int i=0;i<a.length;i+)char c=(char)(secretai);/再次异或运算,即复原 namearea.append(""+c);mark=2;JOptionPane.showMessageDialog(null,"解密成功!","温馨提示",JOptionPane.WARNING_MESSAGE);elseJOptionPane.showMessageDialog(null,"密钥输入错误,请重新输入:","温馨提示",JOptionPane.WARNING_MESSAGE);M1=JOptionPane.showInp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论