JAVA课程设计 文件加密解密.docx

上传人:b****5 文档编号:5691029 上传时间:2022-12-31 格式:DOCX 页数:19 大小:139.42KB
下载 相关 举报
JAVA课程设计 文件加密解密.docx_第1页
第1页 / 共19页
JAVA课程设计 文件加密解密.docx_第2页
第2页 / 共19页
JAVA课程设计 文件加密解密.docx_第3页
第3页 / 共19页
JAVA课程设计 文件加密解密.docx_第4页
第4页 / 共19页
JAVA课程设计 文件加密解密.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

JAVA课程设计 文件加密解密.docx

《JAVA课程设计 文件加密解密.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计 文件加密解密.docx(19页珍藏版)》请在冰豆网上搜索。

JAVA课程设计 文件加密解密.docx

JAVA课程设计文件加密解密

辽宁工业大学

JAVA程序设计课程设计(论文)

 

题目:

文件加密解密

 

院(系):

软件学院

专业班级:

软件工程

学号:

学生姓名:

***********************

教师职称:

讲师

起止时间:

2012.6.18至2012.7.1

 

程序设计专题(报告)任务及评语

院(系):

软件学院教研室:

软件教研室

学号

学生姓名

专业班级

软件工程

程序设计(报告)题目

文件加密解密

程序设计(报告)任务

程序设计专题的任务与要求:

(1)掌握Java编程、面向对象的基础知识。

(2)较熟练地编写Java应用程序Application。

(3)了解Java的常用标准类库、编程技巧、异常处理。

(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。

(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。

(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。

课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。

正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。

指导教师评语及成绩

成绩:

指导教师签字:

2012年7月5日

 

第1章课程设计的目的与要求

1.1课程设计目的

《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.2课程设计的实验环境

硬件要求能运行Windows9.X操作系统的微机系统。

JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。

1.3课程设计的预备知识

熟悉JAVA语言及ECLIPSE开发工具。

1.4课程设计要求

按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

第2章课程设计内容

2.1课程设计主要内容

文件加密解密是科技飞速发展的中通信安全保密问题的最终结果,无论是当今还是未来计算机信息的保密问题显得越来越重要,无论是个人信息通信还是电子商务发展,都迫切需要保证Internet网上信息传输的安全,需要保证信息安全。

其中,信息安全的核心是密码技术。

在这个java编写的加密解密程序中,我这个设计实现了文本编辑器的基本功能有:

打开文件,文件保存,文件另存为,文件加密,文件解密,及其查找。

2.2概要设计

2.2.1功能分析

根据系统的设计要求,设计的系统功能模块如图2-1所示。

 

 

 

图2-1系统功能模块图

在做加密解密工具时首先确定的是界面的设计,此工具的主界面主要有三个标签:

加密、解密、路径设置。

加密标签界面里设计了四个panel工具,主要用于实现文件的加密功能,当向panel1或panel2拖入要加密的文件时它会弹出一个要输入密码的对话框,此界面的下方有一个textbox用于接收传进来的文件路径。

在解密标签的窗口中的界面基本上与加密标签里一样,但用于实现文件的解密功能。

加密解密工具中的路径设置用于设置加密解密文件存放路径,这一块中要分两个区域:

加密文件路径设置区(groupBox1)和解密文件路径设置区(groupBox2),在groupBox1标签中有两个单选按钮:

radiobutton1设置的路径与原文件路径相同和radiobutton2设置了自定义的路径,一个文本框按钮(textbox3)一个选择button按钮。

Button按钮是获得文件存储的路径,得到路径后就会把路径传给文本框按钮textBox3,textBox3的作用是将从button那得到的路径传加密标签是的textBox1。

解密文件路径设置区的设计也和加密文件路径设置区一样,这里就不多说了。

在设计时还要用到两个对话框,用于设置加密或解密密码。

有两个文本框用于输入密码,一个确定按钮用来传送密码,一个取消按钮用来取消当前的操作。

2.2.2自定义类说明

1.类名:

Cryp

作用:

主类

继承的父类:

没有

实现的接口:

没有

2.类名:

encryptt

作用:

主类

继承的父类:

Frame

实现的接口:

ActionListener

3.类名:

Key

作用:

主类

继承的父类:

没有

实现的接口:

没有

4.类名:

MessageDigestExample

作用:

主类

继承的父类:

没有

实现的接口:

没有

表2.1主类成员变量表

成员变量描述

变量类型

名称

初始化界面

int

map

初始化界面

int

ran

设置字体

int

width

设置字体

int

height

坐标

int

lastx

坐标

int

lasty

拖动鼠标后坐标

int

last_downx

拖动鼠标后坐标

int

last_downy

拖动鼠标后坐标

int

stepx

拖动鼠标后坐标

int

stepy

选择

boolean

choose

数组

boolean

click

按下鼠标

boolean

m_down

放开鼠标

boolean

m_drag

放开鼠标

boolean

not_redraw

设置字体

Font

font1

 

表2.2主类方法表

方法名

功能

备注

init

程序的初始化

initForm

面板初始化

mouseClicked

单击鼠标时产生的事件

接口方法

mouseEntered

鼠标进入某个区域时产生的事件

接口方法

mouseExited

鼠标退出某个区域时产生的事件

接口方法

mouseMoved

移动鼠标时产生的事件

接口方法

mouseDragged

拖动鼠标时产生的事件

接口方法

mousePressed

按下鼠标时产生的事件

接口方法

mouseReleased

放开鼠标时产生的事件

接口方法

wingame

程序是否结束

initgame

游戏初始化

“以下是我找到的方法”

“功能不清楚”

JFileChooser

实例化文件选择器

构造方法

serialVersionUID

实例化文件选择器

windowClosing

actionPerformed

decode

构造方法

fen

encode

he

无法继续解密

shuchu

qu

文件不能为空

2.3详细设计

2.3.1界面设计

1.加密解密界面设计

运行MicrosoftVisualStudio环境,创建一个项目命名为:

WindowsApplication1,在项目里建一个表单Form1,把它作为文件加密解密工具的主界面。

主界面窗口有三个标签:

设置、加密、解密,要分别对这三个标签做详细的设计,设计时要用到MicrosoftVisualStudio里的工具箱里面的工具。

每个标签的设计如下:

(1)“加密”标签的设计

此标签包含有4个panel(此处只实现一个)和textBox1,textBox1用于存放传过来的加密路径。

panel主要实现文件的拖放和文件的加密功能。

当一个文件拖到panel中时,会弹出一个要求输入密码的对话框。

把输入的密码传回到Form1的panel1_dragDrop中,实现拖放功能.此标签包含有4个panel(此处只实现一个)和textBox1,textBox1用于存放传过来的加密路径。

panel主要实现文件的拖放和文件的加密功能。

当一个文件拖到panel中时,会弹出一个要求输入密码的对话框。

把输入的密码传回到Form1的panel1_dragDrop中。

(2)“解密”标签的设计

此界面中有一个panel和一个textbox2,textbox2用于存放传过来的加密路径,panel用于实现文件的拖放和解密功能,当一个文件拖到panel中时,会弹出一个输入密码对话框。

把输入的密码传回到Form1的panel5_dragDrop中。

(3)“设置”标签的设计

此界面主要有两个部分组成:

加密文件存储路径和解密文件存储路径,由groupbox1、groupbox2、组成。

在groupbox11中有两个单选按钮radiobutton1和radiobutton2,分别命名为“与加密文件相同目录”、“指定存储路径”,一个文本框textbox3和一个button1,textbox3用于存放指定的加密路径,button1实现文件的路径的选择。

在代码设计部分,要首先让radiobutton1在程序运行时自动获得焦点,在radiobutton1获得焦点时,radiobtuuon2将会失去焦点,同时textbox3和button1的状态为不可见状态。

要实现这些功能就要把radiobutton1和radiobutton2同时放到一个函数中

按照以上的步骤就可以实现选择指定的加密路径,但路径只会传给textBox3,在button2中添加如下代码,使textBox3中存放的路径值传给textBox1,并将textBox3的值设置为空。

解密部分的实现过程跟加密大致相同,这里不给予详细说明。

2.加密密钥界面设计

加密密钥界面Form2里由两个标签:

label1、label2,分别命名为输入密码、确认密码;两个文本框:

textBox1、textBox2,用于用户输入密码(密码以*的形式显示出来);两个按键:

button1、button2(分别为确认、取消)。

在Form2开始设一个全局变量mm1,当单击确定按钮时对textBox1和textBox2中的内容进行判断,如果两个文本框中输入的值相同,则把textBox2中的值赋给mm1,提示“加密成功”,并关闭此Form2。

如果textBox1与textBox2中的值不同则提示“密码不同,请重新输入!

”,并把textBox1与textBox2中的值清空,以便用户重新输入密码。

button2的作用是关闭当前对话框不做任何操作,命令为:

this.Close()。

这样加密密钥窗口窗口就设计好了。

3.解密密钥界面设计

解密密钥界面的设计与加密密钥界面的设计过程都是一样的,同样Form3由两个标签:

label1、label2,分别命名为输入密码、确认密码;两个文本框:

textBox1、textBox2,用于用户输入密码(密码以*的形式显示出来);两个按键:

button1、button2(分别为确认、取消)。

在Form2开始设一个全局变量mm2,当单击确定按钮时对textBox1和textBox2中的内容进行判断,如果两个文本框中输入的值相同,则把textBox2中的值赋给mm2,提示“解密成功”,并关闭此Form2。

如果textBox1与textBox2中的值不同则提示“密码不同,请重新输入!

”,并把textBox1与textBox2中的值清空,以便用户重新输入密码。

button2的作用是关闭当前对话框不做任何操作,命令为:

this.Close()。

2.4程序实现

2.4.1源码分析

importjava.awt.*;

importjava.awt.event.*;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjavax.swing.JFileChooser;

importjavax.swing.JOptionPane;

importjavax.swing.JScrollPane;

importjavax.swing.JTextArea;

publicclassencryptextendsFrameimplementsActionListener{

privateMenuBarmenubar;

privateMenumenu1,menu2,menu3,menu4;

privateMenuItemmenuitem1,menuitem1_1,menuitem2,menuitem2_2,menuitem3,menuitem22,menuitem22_2,menuitem4;

privatestaticJTextAreatxtarea;

privateMenuShortcutms1,ms2,ms3,ms4;Filef;

encrypt(){

  super("本程序:

加密解密程序");

  txtarea=newJTextArea();

  menubar=newMenuBar();

  menu1=newMenu("文件");

  menuitem1=newMenuItem("打开");

  menuitem1_1=newMenuItem("保存");

  ms1=newMenuShortcut(KeyEvent.VK_N);

  menuitem1.addActionListener(this);

  menuitem1_1.addActionListener(this);

  menu1.add(menuitem1);

  menu1.add(menuitem1_1);

  menu2=newMenu("保护");

  menuitem2=newMenuItem("二进制加密");

  menuitem2_2=newMenuItem("二进制解密");

  menuitem22=newMenuItem("十六进制加密");

  menuitem22_2=newMenuItem("十六进制解密");

  menuitem2.addActionListener(this);

  ms2=newMenuShortcut(KeyEvent.VK_A);

  menuitem2_2.addActionListener(this);

  menu2.add(menuitem2);

  menu2.add(menuitem2_2);

  menu2.add(menuitem22);

  menu2.add(menuitem22_2);

  menu3=newMenu("编辑");

  menuitem3=newMenuItem("清空");

  menu3.add(menuitem3);

  menuitem3.addActionListener(this);

  menuitem22.addActionListener(this);

  menuitem22_2.addActionListener(this);

  menu4=newMenu("帮助");

  menuitem4=newMenuItem("关于");

  ms4=newMenuShortcut(KeyEvent.VK_H);

  menuitem4.addActionListener(this);

  menu4.add(menuitem4);

  menubar.add(menu1);

  menubar.add(menu2);

  menubar.add(menu3);

  menubar.add(menu4);

  setMenuBar(menubar);

  setLayout(newBorderLayout());

  add(newJScrollPane(txtarea),BorderLayout.CENTER);

  txtarea.setLineWrap(true);

  addWindowListener(newWindowAdapter(){

   publicvoidwindowClosing(WindowEvente){

    System.exit(0);

   }

  });

  setSize(900,600);

  setVisible(true);

  validate();

}

publicvoidactionPerformed(ActionEvente){

  if(e.getSource()==menuitem1){

   try{

    file();

    qu();

   }catch(Exceptionee){};

  }elseif(e.getSource()==menuitem1_1){  

   try{

    file();

    shuchu();

   }catch(Exceptionee){};

  }elseif(e.getSource()==menuitem2){

   txtarea.setText(fen(encode(txtarea.getText())));  

  }elseif(e.getSource()==menuitem2_2){

   System.out.println

(1);

   Stringstring=he(txtarea.getText());

   if(!

string.equals("")){

    txtarea.setText(decode(string));

   }

  }elseif(e.getSource()==menuitem22){

   txtarea.setText(encode(txtarea.getText()));

  }elseif(e.getSource()==menuitem22_2){

   if(!

decode(txtarea.getText()).equals("")){

    txtarea.setText(decode(txtarea.getText()));

   }

  }elseif(e.getSource()==menuitem3){

   txtarea.setText("");

  }elseif(e.getSource()==menuitem4){

   txtarea.setText("本程序:

\n加密解密多少次随自己愿意..只要你记得解密步骤..");

  }

}

publicstaticvoidmain(String[]args){

  newencrypt();

}

publicvoidfile(){

  JFileChooserfileChooser=newJFileChooser();//实例化文件选择器

  fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置文件选择模式,此处为文件和目录均可

  if(fileChooser.showOpenDialog(encrypt.this)==JFileChooser.APPROVE_OPTION){//弹出文件选择器,并判断是否点击了打开按钮

   StringfileName=fileChooser.getSelectedFile().getAbsolutePath();//得到选择文件或目录的绝对路径

   f=newFile(fileName);

  }

}

privatestaticStringhexString="123456789ABCDEF";

  privatestaticStringdecode(StringtheHex){  

     StringtheRst="";  

     byte[]theByte=newbyte[theHex.length()/2];

     try{  

     for(inti=0;i

     eByte[i/2]=Integer.decode("0X"+  

     theHex.substring(i,i+2)).byteValue();

     }  

     theRst=newString(theByte,0,theByte.length);  

     }catch(ExceptionUe){   

     JOptionPane.showMessageDialog(null,"无法继续解密");

     }  

     returntheRst;  

   }  

   privatestaticStringencode(StringtheStr){  

     byte[]bytes;  

     Stringresult="";  

     inttmp;  

     StringtmpStr;   

     bytes=theStr.getBytes();  

     for(inti=0;i

     if(bytes[i]<0){  

     tmp=256+bytes[i];  

     tmpStr=Integer.toHexString(tmp).toUpperCase();  

      result+=tmpStr;  

      }else{  

      tmpStr=Integer.toHexString(bytes[i]).toUpperCase();  

      result+=tmpStr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

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

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