当前位置:文档之家› 加密解密课程设计

加密解密课程设计

加密解密课程设计
加密解密课程设计

兰州商学院陇桥学院

工学系课程设计报告

课程名称: Java 设计题目:加密与解密

系别:工学系

专业 (方向):信息管理与信息系统

年级、班:2012级(2)班

学生姓名:费亚芬

学生学号:20120651208

指导教师:张鑫

2014年7 月1日

目录

一、系统开发的背景 (1)

二、系统分析与设计 (1)

(一)系统功能要求 (1)

(二)系统模块结构设计 (2)

三、系统的设计与实现 (2)

(一)图形用户界面模块 (2)

(二)加密操作模块 (3)

(三)解密操作模块 (4)

(四)文件保存模块 (4)

(五)文件选择模块 (5)

四、系统测试 (6)

(一)测试加密 (6)

(二)测试选择加密文件 (6)

(三)测试生成加密文件 (6)

(四)测试浏览加密文件 (7)

(五)测试解密文件 (8)

五、总结 (8)

六、附件(代码、部分图表) (10)

加密与解密

一、系统开发的背景

随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,本程序设计对文件的加密使用的是最基础的异或加密算法。

Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,满足了用户对文件安全性的需求。

二、系统分析与设计

(一)系统功能要求

可以采用图形用户界面,给定任意一个文本文件,进行加密,生成另一个文件,然后对加密后的文件还原。

1、向图形用户界面中添加组件;

2、设置各个组件的布局;

3、添加窗口事件;

4、查找读入及写入文件,并显示;

5、加密功能实现;

6、解密功能实现;

(二)系统模块结构设计

通过对系统功能的分析,加密与解密功能如图1所示。

图1 加密与解密功能图

三、系统的设计与实现

(一)图形用户界面模块

分析:在图形用户界面,设置两个面板,并分别设置显示其组件的布

局。设置两个菜单项,分别为“打开”和“保存”;设置两个按钮,分别为“加密”和“解密”;创建一个文本区,用一个标签注明“文件浏览窗口”,这就是整个图形用户界面。

此外,还添加了一个窗口事件windowClosing,可以关闭运行的程序。

窗口事件的代码如下所示:

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

}

(二)加密操作模块

分析:本程序采用简单的加密算法,即把从文本区获得的文本文件,初始化,存放到一个数组中,然后进行异或运算,把结果重新存放于该数组中,从而显现在“文件浏览窗口”中。

代码如下:

if(e.getSource()==button1)

{

char a[]=texta.getText().toCharArray();/*把texta中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组a[]

中*/

texta.setText(null);

int n;

char secret=' ';

for(int i=0;i

{

char c=(char)(secret^a[i] ;//进行异或运算)

texta.append(""+c);

}

}

(三) 解密操作模块

分析:解密操作其实同加密操作相同,依旧首先打开加密后的文件,使其显示在文本区中,再同样对数组里的元素进行初始化,进行异或运算,即可得到解密后的文件,再显示到“文件浏览窗口”中。

入口参数:指定文件路径

代码如下:

if(e.getSource()==button2)

{

char a[]=texta.getText().toCharArray();

texta.setText(null);

int n;

char secret=' ';

for(int i=0;i

{

char c=(char)(secret^a[i]);//再次异或运算,即还原

texta.append(""+c);

}

}

(四)文件保存模块

分析:本程序最大的特点就是:可以选择是否保存加密后的文本文件。因为加密后的文件先显示在文本区中,之后选择菜单项“保存”,即可弹出“保存对话框”,进行查找写入文件,写入字符流,从而实现保存。

代码如下:

if(e.getSource()==itemSave)//查找写入的文件

{

filedialog_save.setVisible(true);

if(filedialog_save.getFile()!=null)

{

try

{

File file=new

File(filedialog_save.getDirectory(),filedialog_save.getFile());

FileWriter tofile=new FileWriter(file);//写入字符流

BufferedWriter out=new BufferedWriter(tofile);

out.write(texta.getText(),0,(texta.getText()).length());

out.close();

tofile.close();

}

catch (IOException e2)

{

}

}

}

(五)文件选择模块

分析:同上个文件保存模块类似,依旧在选择菜单项“打开”后,查找读入文件,读取字符流,弹出“打开对话框”,从而可实现获取文件。

出口值:被选文件的路径

代码如下:

public void actionPerformed(ActionEvent e)//查找读入文件

{

if(e.getSource()==itemOpen)

{

filedialog_load.setVisible(true);

texta.setText(null);

String s;

if(filedialog_load.getFile()!=null)

{

try

{

File file=new

File(filedialog_load.getDirectory(),filedialog_load.getFile());

FileReader file_reader=new FileReader(file);//读取字符流

BufferedReader in=new BufferedReader(file_reader);

while((s=in.readLine())!=null)

texta.append(s+'\n');

in.close();

file_reader.close();

}

catch (IOException e1)

{

}

}

}

四、系统测试

(一)测试加密

首先在我机器C盘文件夹名为1的文件夹离创建一个名为Example.txt文本文件用做测试,如图2所示:

图2 加密运行程序

(二)测试选择加密文件

点击“文件”,选择“打开”,即弹出“打开”对话框,选择一个文本文件,如图3所示:

图3 选择加密文件

(三)测试生成加密文件

选择文件后,即可在“文件浏览窗口”中显示文本的信息,点击

“加密”按钮,即可在“文件浏览窗口”看到加密后的文件,如图4所示:

图4 生成加密文件

(四)测试浏览加密文件

对加密后的密文进行保存,选择“文件”下的“保存”,即可弹出“保存”对话框,选择路径,即可保存,如图5、6所示:

图5加密文件测试

图 6浏览加密文件测试

(五)测试解密文件

解密操作中对文件选择,密码输入和加密操作是一样的。将刚刚加密的程序进行解密,打开密文文件,选择“加密与解密”窗口下“解密”按

钮,点击,即可解密,如图7所示:

图7 解密文件

五、总结

Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系

结构中立、解释执行、高性能、分布式和动态等主要特点。而且,我觉得

随着科技的不断进步,Java语言的优越性会不断地被挖掘出来,因为Java

语言也是有生命的,它是不断被人们的需求演变的越来越强大,这些,我

觉得不言而喻。但往后,我想只有在不断的使用以后才能体会到,在发现Java拥有秘密密钥工厂后更是感受到它的强大。Java的JDK帮助文档对于使用Java编程是非常有帮助的,在我们编程过程中,遇到的一些不清楚的地方,都是靠它才得以解决,同时对Java语言的了解也更方便、深入了。

程序利用Java图形界面设计了一个方便用户操作的窗口,使得程序运行的时候更想是个封装好的运用程序,不过我知道离这个还是有很大距离的,而程序所要提升空间非常大,现在界面所能实现的也就几个操作而已。但我们一致认为:如果程序要再做的强大点,可以引入其他的加密算法共用户选择,还可以设计成同时对多个文件进行加密,不过这只能放到我们课下对此进行更深一步的研究了。

程序的每个模块实现的功能还算完整,层次间的调用还是比较清晰的,各个功能也得到了基本的实现。

算法的时空分析,其实就是指算法的空间复杂度(包括时间复杂度和空间复杂度),其作用:时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。

这次课程设计的要求并不多,只要实现加密与解密功能,而且只需要采用一种加密算法,但是为了本次课程设计,我们组也搜索了大量的资料,并根据在课堂上,书本上,老师讲过的知识,结合自身主观和客观因素,制定了本次课程设计的目标,并齐心协力,完成了此次设计。

通过本次的课程设计,我们还知道了许多自身存在的不足,例如仅掌握了一种加密算法,但在日益发达的社会商业等领域,加密解密需要做的还非常多,并且Java领域博大精深,我们现在只是学到了它的一点皮毛而

已,所以还需多多努力。

但是通过这些我还是学到了很多东西,先不说其他的,我最起码最基础的加密算法,而且以后可以运用到自己想要保密的文件当中去。

通过这次课程设计,我用JAVA语言实现,我这是我对JAVA语言有了根深的了解巩固了以前学到的知识,也学习到了新的知识,课程设计虽然暂告一个段落,但我们学习Java的步伐不会终止。

六、附件(代码、部分图表)

源代码:

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import javax.swing.*;

class Myframe extends Frame implements ActionListener {

FileDialog filedialog_save,filedialog_load;

Button button1,button2;

Label label;

MenuBar bar;

Menu menu;

MenuItem itemOpen,itemSave;

TextArea texta;

Myframe(String s) //创建对话框

{

super(s);

texta= new TextArea(38,160);

button1= new Button("加密");

button2= new Button("解密");

menu=new Menu("文件");

itemOpen=new MenuItem("打开");

itemSave=new MenuItem("保存");

label=new Label("文件浏览窗口");

itemOpen.addActionListener(this);

itemSave.addActionListener(this);

button1.addActionListener(this);

button2.addActionListener(this);

filedialog_save=new FileDialog(this,"保存文件对话框",FileDialog.SAVE);

filedialog_load=new FileDialog(this,"打开文件对话框",FileDialog.LOAD);

filedialog_save.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

filedialog_save.setVisible(false);

}

});

filedialog_load.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

filedialog_load.setVisible(false);

}

});

Box box1=Box.createHorizontalBox();//创建一个从左到右显示其组件的 box1;

Box box2=Box.createVerticalBox();//创建一个从上到下显示其组件的 box2; Box box3=Box.createVerticalBox();

Box boxbase=Box.createVerticalBox();

Panel panel1=new Panel();

Panel panel2=new Panel();

setMenuBar(bar=new MenuBar());

bar.add(menu);

menu.add(itemOpen);

menu.add(itemSave);

panel1.add(button1);

panel1.add(button2);

box1.add(panel1);

box2.add(label);

panel2.add(texta);

box3.add(panel2);

boxbase.add(box1);

boxbase.add(box2);

boxbase.add(box3);

add(boxbase);

setLayout(new FlowLayout());

setBounds(100,0,1200,750);

setVisible(true);

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

}//“关闭”窗口事件;

public void actionPerformed(ActionEvent e)//查找读入文件{

if(e.getSource()==itemOpen)

{

filedialog_load.setVisible(true);

texta.setText(null);

String s;

if(filedialog_load.getFile()!=null)

{

try

{

File file=new

File(filedialog_load.getDirectory(),filedialog_load.getFile());

FileReader file_reader=new FileReader(file);//读取字符流

BufferedReader in=new BufferedReader(file_reader);

while((s=in.readLine())!=null)

texta.append(s+'\n');

in.close();

file_reader.close();

}

catch (IOException e1)

{

}

}

}

if(e.getSource()==itemSave)//查找写入的文件

{

filedialog_save.setVisible(true);

if(filedialog_save.getFile()!=null)

{

try

{

File file=new

File(filedialog_save.getDirectory(),filedialog_save.getFile());

FileWriter tofile=new FileWriter(file);//读取字符流

BufferedWriter out=new BufferedWriter(tofile);

out.write(texta.getText(),0,(texta.getText()).length());

out.close();

tofile.close();

}

catch (IOException e2)

{

}

}

}

if(e.getSource()==button1)

{

char a[]=texta.getText().toCharArray();/*把texta中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组a[]中*/

texta.setText(null);

int n;

char secret=' ';

for(int i=0;i

{

char c=(char)(secret^a[i]);//进行异或运算

texta.append(""+c);

}

}

if(e.getSource()==button2)

{

char a[]=texta.getText().toCharArray();

texta.setText(null);

int n;

char secret=' ';

for(int i=0;i

{

char c=(char)(secret^a[i]);//再次异或运算,即还原

texta.append(""+c);

}

}

}

}

public class E1{

public static void main(String args[]){

Myframe frame = new Myframe("加密与解密");

}

}

文件加密与解密—Java课程设计报告

JAVA课程设计题目:文件的加密与解密 姓名: 学号: 班级: 日期:

目录 一、设计思路 (3) 二、具体实现 (3) 三、运行调试与分析讨论 (8) 四、设计体会与小结 (11) 五、参考文献 (12) 六、附录 (12)

一、设计思路 自从Java技术出现以业,有关Java平台的安全性用由Java技术发展所引发的安全性问题,引起了越来越多的关注。目前,Java已经大量应用于各个领域,研究Java的安全性对于更好地利用Java具有深远的意义。使用Java的安全机制设计和实现安全系统更具有重要的应用价值。 本课程设计,主要实践Java安全中的JCE模块,包括密钥生成,Cipher对象初始化、加密模式、填充模式、底层算法参数传递,也涉及文件读写与对象输入输出流。 二、具体实现 本系统通过用户界面接收三个参数:明文文件、密文文件、口令。采用DES加密算法,密码分组链(Cipher Block Chaining,CBC)加密模式,PKCS#5-Padding的分组填充算法。因为CBC涉及到底层算法参数的解密密钥的传递,所以将明文文件中的字节块以密封对象(Sealed Object)的方式加密后,用对象流输出到密文文件,这样就将密文、算法参数、解密密钥三都密封到一个对象中了。口令的hash值作为产生密钥的参数。设计流程图如下所示: 文件加密与解密设计流程图

本系统中,包含Default,Shares,SecretKey,EncAndDec四个包共6个类组成。定义的几个参数:MAX_BUF_SIZE为每次从文件中读取的字节数,也是内存缓冲区的大小;加密算法为DES;加密模式是密码分组链(CBC)模式;分组填充方式是PKCS#5Padding。包和类结构图如下所示: 本课程设计,包和类结构图: 以下为包中的类的方法实现说明 Package Shares类结构图

网络安全常见的四种加密解密算法

package mima; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class Mainer { StringBuffer MStr = new StringBuffer(""); // 加密字符串 StringBuffer CStr = new StringBuffer(""); // 解密字符串 public static void main(String[] args) { System.out.print("请输入密钥:"); Scanner s = new Scanner(System.in); int key = s.nextInt() % 26; // %26的意义是获取密钥的偏移值 Mainer ks = new Mainer(); ks.E(key); // 加密 ks.D(key); // 解密 } /** * 加密公式 */ void E(int k) { try { System.out.println("请输入一段明文:"); char b[]; BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in)); String str2 = br2.readLine(); b = str2.toCharArray(); char ch = ' '; for (int i = 0; i < str2.length(); i++) { if (b[i] >= 'a' && b[i] <= 'z') { ch = (char) ((b[i] - 'a' + k) % 26 + 'a'); } if(b[i] >= 'A' && b[i] <= 'Z'){ ch = (char) ((b[i] - 'A' + k) % 26 + 'A'); } if(b[i]>='0'&&b[i]<='9')

加密解密课程设计

兰州商学院陇桥学院工学系课程设计报告 课程名称: Java 设计题目:加密与解密 系别:工学系 专业 (方向):信息管理与信息系统 年级、班:2012级(2)班 学生姓名:费亚芬 学生学号: 208

指导教师:张鑫 2014年7 月 1日 目录 一、系统开发的背景................................. 错误!未定义书签。 二、系统分析与设计................................. 错误!未定义书签。(一)............................................. 系统功能要求错误!未定义书签。(二)......................................... 系统模块结构设计错误!未定义书签。 三、系统的设计与实现............................... 错误!未定义书签。(一)图形用户界面模块 ........................... 错误!未定义书签。(二)加密操作模块 ............................... 错误!未定义书签。 (三)解密操作模块................................ 错误!未定义书签。(四)文件保存模块 ............................... 错误!未定义书签。

(五)文件选择模块 ............................... 错误!未定义书签。 四、系统测试....................................... 错误!未定义书签。(一)测试加密..................................... 错误!未定义书签。(二)测试选择加密文件............................. 错误!未定义书签。(三)测试生成加密文件............................. 错误!未定义书签。(四)测试浏览加密文件............................. 错误!未定义书签。(五)测试解密文件................................. 错误!未定义书签。 五、总结........................................... 错误!未定义书签。 六、附件(代码、部分图表) ......................... 错误!未定义书签。

几种常用的数据加密技术

《Network Security Technology》Experiment Guide Encryption Algorithm Lecture Code: 011184 Experiment Title:加密算法 KeyWords:MD5, PGP, RSA Lecturer:Dong Wang Time:Week 04 Location:Training Building 401 Teaching Audience:09Net1&2 October 10, 2011

实验目的: 1,通过对MD5加密和破解工具的使用,掌握MD5算法的作用并了解其安全性; 2,通过对PGP加密系统的使用,掌握PGP加密算法的作用并了解其安全性; 3,对比MD5和PGP两种加密算法,了解它们的优缺点,并总结对比方法。 实验环境: 2k3一台,XP一台,确保相互ping通; 实验工具:MD5V erify, MD5Crack, RSA-Tools,PGP8.1 MD5加密算法介绍 当前广泛存在有两种加密方式,单向加密和双向加密。双向加密是加密算法中最常用的,它将明文数据加密为密文数据,可以使用一定的算法将密文解密为明文。双向加密适合于隐秘通讯,比如,我们在网上购物的时候,需要向网站提交信用卡密码,我们当然不希望我们的数据直接在网上明文传送,因为这样很可能被别的用户“偷听”,我们希望我们的信用卡密码是通过加密以后,再在网络传送,这样,网站接受到我们的数据以后,通过解密算法就可以得到准确的信用卡账号。 单向加密刚好相反,只能对数据进行加密,也就是说,没有办法对加密以后的数据进行解密。这有什么用处?在实际中的一个应用就是数据库中的用户信息加密,当用户创建一个新的账号或者密码,他的信息不是直接保存到数据库,而是经过一次加密以后再保存,这样,即使这些信息被泄露,也不能立即理解这些信息的真正含义。 MD5就是采用单向加密的加密算法,对于MD5而言,有两个特性是很重要的,第一是任意两段明文数据,加密以后的密文不能是相同的;第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。前者的意思是不可能有任意两段明文加密以后得到相同的密文,后者的意思是如果我们加密特定的数据,得到的密文一定是相同的。不可恢复性是MD5算法的最大特点。 实验步骤- MD5加密与破解: 1,运行MD5Verify.exe,输入加密内容‘姓名(英字)’,生成MD5密文;

加密解密程序设计

课程设计 题目加密解密程序设计 学院自动化学院 专业电气工程及其自动化班级 姓名 指导教师 年月9 日

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:自动化学院 题目:加密解密程序设计 初始条件: 掌握8086汇编语言程序设计方法,设计一个电子时钟,实现分、秒、时的显示与刷新功能。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1. 定义显示界面。 2. 调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。 3. 将存在系统内存区的时间数用数字式或指针式钟表的形式显示出来。 4. 获取键盘的按键值,判断键值并退出系统。 5. 撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。 时间安排: 12月26日-----12月28日查阅资料及方案设计 12月29日----- 1月 2 日编程 1月3日----- 1月7日调试程序 1月8日----- 1月9日撰写课程设计报告 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要 (1) 1设计任务及要求 (2) 1.1 加密解密设计的意义 (2) 1.2 程序设计任务 (2) 2 加密方法及方案比较 (3) 2.1 加密方法 (3) 2.2 加密方案及比较 (3) 3 加密解密设计流程及描述 (5) 3.1程序所需模块 (5) 3.2程序运行界面 (5) 3.3响铃程序 (6) 3.4功能选择程序 (6) 3.5数据循环输入子程序 (7) 3.6加密过程程序 (8) 3.7解密过程程序 (9) 3.8退出程序 (10) 3.9总体程序流程图 (11) 4 程序调试说明和结果分析 (12) 4.1 程序调试 (12) 4.2 程序运行结果 (12) 5 心得体会 (15) 参考文献 (16) 附录:设计原程序 (17) 本科生课程设计成绩评定

密码学课程方案AES加密解密文档

个人资料整理仅限学习使用 成都信息工程学院课程设计报告 AES加密解密的实现 课程名称:应用密码算法程序设计 学生姓名: 学生学号: 专业班级: 任课教师: 年月日

个人资料整理仅限学习使用 附件:课程设计成绩评价表

个人资料整理仅限学习使用目录

1.背景 AES,密码学中的高级加密标准

数据加密实验报告

实验报告 课程:计算机保密_ _ 实验名称:数据的加密与解密_ _ 院系(部):计科院_ _ 专业班级:计科11001班_ _ 学号: 201003647_ _ 实验日期: 2013-4-25_ _ 姓名: _刘雄 _ 报告日期: _2013-5-1 _ 报告评分:教师签字:

一. 实验名称 数据加密与解密 二.运行环境 Windows XP系统 IE浏览器 三.实验目的 熟悉加密解密的处理过程,了解基本的加密解密算法。尝试编制基本的加密解密程序。掌握信息认证技术。 四.实验内容及步骤 1、安装运行常用的加解密软件。 2、掌握加解密软件的实际运用。 *3、编写凯撒密码实现、维吉尼亚表加密等置换和替换加解密程序。 4、掌握信息认证的方法及完整性认证。 (1)安装运行常用的加解密软件,掌握加解密软件的实际运用 任务一:通过安装运行加密解密软件(Apocalypso.exe;RSATool.exe;SWriter.exe等(参见:实验一指导))的实际运用,了解并掌握对称密码体系DES、IDEA、AES等算法,及非对称密码体制RSA等算法实施加密加密的原理及技术。 ?DES:加密解密是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位。 ?BlowFish:算法用来加密64Bit长度的字符串或文件和文件夹加密软件。 ?Gost(Gosudarstvennyi Standard):算法是一种由前苏联设计的类似DES算法的分组密码算法。它是一个64位分组及256位密钥的采用32轮简单迭代型加密算法. ?IDEA:国际数据加密算法:使用128 位密钥提供非常强的安全性; ?Rijndael:是带有可变块长和可变密钥长度的迭代块密码(AES 算法)。块长和密钥长度可以分别指定成128、192 或256 位。 ?MISTY1:它用128位密钥对64位数据进行不确定轮回的加密。文档分为两部分:密钥产生部分和数据随机化部分。 ?Twofish:同Blowfish一样,Twofish使用分组加密机制。它使用任何长度为256比特的单个密钥,对如智能卡的微处理器和嵌入在硬件中运行的软件很有效。它允许使用者调节加密速度,密钥安装时间,和编码大小来平衡性能。 ?Cast-256:AES 算法的一种。 (同学们也可自己下载相应的加解密软件,应用并分析加解密过程) 任务二:下载带MD5验证码的软件(如:https://www.doczj.com/doc/3b9638106.html,/downloads/installer/下载(MySQL):Windows (x86, 32-bit), MSI Installer 5.6.11、1.5M;MD5码: 20f788b009a7af437ff4abce8fb3a7d1),使用MD5Verify工具对刚下载的软件生成信息摘要,并与原来的MD5码比较以确定所下载软件的完整性。或用两款不同的MD5软件对同一文件提取信息摘要,而后比较是否一致,由此可进行文件的完整性认证。

java文件加密解密课程设计

软件学院 课程设计报告书 课程名称面向对象程序设计 设计题目文本文档的加密与解密 专业班级财升本12-1班 学号 1220970120 姓名王微微 指导教师徐娇月 2013年 1 月

1 设计时间 2013年1月14日-2013年1月18日 2 设计目的 面向对象程序设计是一门实践性很强的计算机专业基础课程。通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。 3 设计任务 对文件进行加密解密 4 设计内容 4.1 需求分析 (1)给定任意一个文本文件,进行加密,生成另一个文件。 (2)对加密后的文件还原。 4.2 总体设计 4.2.1 包的描述 导入了java.awt; java.awt.event; java.io; javax.swing等包。 4.2.2 类的描述 Myframe类;E1类。其中Myframe类继承Frame类;可以扩展Frame的功能并且可以实例化的多种功能,这个类也实现了ActionListener这个接口,它是Java中关于事件处理的一个接口,ActionListener用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的addActionListener 方法向该组件注册。在发生操作事件时,调用该对象的actionPerformed 方法。 4.3 页面设计

图4.3-1 显示页面 代码实现: addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } });

文件加密系统课程设计

仲恺农业工程学院课程设计 文件加密 姓名孙浩斌 院(系)信息科学与技术学院 专业年级计算机132 学号 指导教师罗慧慧 职称学生 起止时间2015-6-15至2015-6-24 仲恺农业工程学院教务处制 目录

一.课程设计目的和要求 设计目的 有时我们有些资料不希望别人看到,最常用的方法就是加密。对给定的相关文件进行加密可以对文件进行保护,可以防止某些重要信息不被别人所知道甚至窃取。对文件起到保护作用,可以方便用户使用某些只有自己能知道的信息,能够安全保护文件的相关内容几信息不被外流。随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,信息安全问题已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否保护自己的个人隐私的关键。信息安全是社会稳定安全的必要前提条件。通过课程设计,使学生了解高级程序设计语言的结构,逐渐培养学生的编程能力、用计算机解决实际问题的能力,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试程序及编写设计报告。

本课程设计的目标: 1. 巩固《高级语言程序设计》课程学习的内容和加深学生对基本知识的理解和掌握。 2. 掌握编程和程序调试的基本技能。 3. 掌握软件设计的方法。 4. 提高运用程序设计解决实际问题的能力。 5. 培养独立思考、综合运用所学有关相应知识的能力。 6. 强化上机动手编程能力,闯过理论与实践相结合的难关! 设计要求 1. 分析课程设计题目的要求,根据所要求的程序功能,画出程序的流程图。 2.对系统功能模块进行分析,写出详细设计说明文档。 3.对程序源代码进行调试与测试,使其能正确运行。 4.设计完成的软件要便于操作和使用。 5.设计完成后提交课程设计报告。 设计意义 至今,密码技术是取得信息安全性最有效的一种方法, 密码技术是信息安全的核心技术。通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。进一步,密码技术可以应用于数字签名、身份认证和信息鉴定,这些应用对于资源存取控制以及其它安全措施是必须而且有效的。相对于防病毒软件和防火墙软件来说,基于密码技术密码类产品、认证类产品份额相对较小,但随着金融、电信、政府等行业信息化建设对于网络安全整体解决方案需求的增加,将会有较大的增长。

数据加密方案

数据加密方案

一、什么是数据加密 1、数据加密的定义 数据加密又称密码学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。 2、加密方式分类 数据加密技术要求只有在指定的用户或网络下,才能解除密码而获得原来的数据,这就需要给数据发送方和接受方以一些特殊的信息用于加解密,这就是所谓的密钥。其密钥的值是从大量的随机数中选取的。按加密算法分为对称密钥和非对称密钥两种。 对称密钥:加密和解密时使用同一个密钥,即同一个算法。如DES和MIT的Kerberos算法。单密钥是最简单方式,通信双方必须交换彼此密钥,当需给对方发信息时,用自己的加密密钥进行加密,而在接收方收到数据后,用对方所给的密钥进行解密。当一个文本要加密传送时,该文本用密钥加密构成密文,密文在信道上传送,收到密文后用同一个密钥将密文解出来,形成普通文体供阅读。在对称密钥中,密钥的管理极为重要,一旦密钥丢失,密文将无密可保。这种

方式在与多方通信时因为需要保存很多密钥而变得很复杂,而且密钥本身的安全就是一个问题。 对称加密 对称密钥是最古老的,一般说“密电码”采用的就是对称密钥。由于对称密钥运算量小、速度快、安全强度高,因而如今仍广泛被采用。 DES是一种数据分组的加密算法,它将数据分成长度为64位的数据块,其中8位用作奇偶校验,剩余的56位作为密码的长度。第一步将原文进行置换,得到64位的杂乱无章的数据组;第二步将其分成均等两段;第三步用加密函数进行变换,并在给定的密钥参数条件下,进行多次迭代而得到加密密文。 非对称密钥:非对称密钥由于两个密钥(加密密钥和解密密钥)各不相同,因而可以将一个密钥公开,而将另一个密钥保密,同样可以起到加密的作用。

DES加密解密课程设计报告

D E S加密解密课程设计报 告 Prepared on 22 November 2020

成都信息工程学院课程设计报告 DES算法加密与解密的设计与实现课程名称:密码算法程序设计 学生姓名: 学生学号: 专业班级: 任课教师: XX年 XX 月 XX 日

目录

1背景 DES算法概述 DES(Data Encryption Standard)是由美国IBM公司于20世纪70年代中期的一个密码算(LUCIFER)发展而来,在1977年1月15日,美国国家标准局正式公布实施,并得到了ISO的认可,在过去的20多年时间里,DES被广泛应用于美国联邦和各种商业信息的保密工作中,经受住了各种密码分析和攻击,有很好的安全性。然而,目前DES算法已经被更为安全的Rijndael算法取代,但是DES加密算法还没有被彻底的破解掉,仍是目前使用最为普遍的对称密码算法。所以对DES的研究还有很大价值,在国内DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键的数据保密,如信用卡持卡人的PIN 码加密传输,IC卡与POS机之间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。 DES算法是一种采用传统的代替和置换操作加密的分组密码,明文以64比特为分组,密钥长度为64比特,有效密钥长度是56比特,其中加密密钥有8比特是奇偶校验,DES的加密和解密用的是同一算法,它的安全性依赖于所用的密钥。它首先把需要加密的明文划分为每64比特的二进制的数据块,用56比特有效密钥对64比特二进制数据块进行加密,每次加密可对64比特的明文输入进行16轮的替换和移位后,输出完全不同的64比特密文数据。由于DES算法仅使用最大为64比特的标准算法和逻辑运算,运算速

常见格式文件的加密和解密

常用格式文件的加密解密方法 庆云县水务局项目办 二〇一二年五月二十三日

目录 0、引子 1 1、新建word文件的加密方法1 1.1任务1 1.2基本步骤1 1.3示范1 2、原有word文件的加密方法4 3、Excel文件的加密方法 4 3.1任务4 3.2基本步骤4 3.3示范4 4、CAD文件的加密方法 5 4.1任务5 4.2基本步骤6 4.3示范6 5、文件的解密方法8 5.1任务8 5.2基本步骤8 5.3示范8

0、引子 我们的日常工作,往往是处理一些文字、表格和图纸。最常用的文件格式有word、excel和CAD。怎样加密、解密这些格式的文件,是我们常遇到的问题。由于文件的加密、解密方法大致一样,所以,这里只介绍这三种文件的加密解密方法。其它格式的文件加密解密,可以参照进行。 加密解密文件需要知道文件格式的后缀名,后缀名又称文件扩展名,是操作系统用来标志文件格式的一种机制。通常来说,一个扩展名是跟在主文件名后面的,由一个分隔符分隔。如文件名“readme.txt”中,readme是主文件名,.txt为扩展名,表示这个文件被认为是一个纯文本文件。常见文档类型及其后缀名和打开方式详见下表。 常见文档类型及其后缀名和打开方式: 1、新建word文件的加密方法 1.1任务 对新建word文档1(未曾保存)进行加密 1.2基本步骤 ①打开菜单“文件”→②点击“另存为”选项→③点击“工具”按钮→④选定“安全措施选项(C)”→⑤输入密码→⑥确定→⑦再次输入密码→⑧确定→⑨保存。 1.3示范 ①打开菜单“文件”:点击菜单栏最左侧的“文件”按钮,弹出“文件”下拉列表; ②点击“另存为”选项:点击“文件”下拉列表的“另存为”选项,弹出“另存为”对话框,如图1所示。

常见硬盘加密解密的几种方法解析

常见硬盘加密解密的几种方法解析 一、修改硬盘分区表信息 硬盘分区表信息对硬盘的启动至关重要,假设找不到有效的分区表,将不能从硬盘启动或即使从软盘启动也找不到硬盘。素日,第一个分区表项的第0子节为80H,透露显示C 盘为活动DOS分区,硬盘能否自举就依*它。若将该字节改为00H,则不能从硬盘启动,但从软盘启动后,硬盘仍然可以接见。分区表的第4字节是分区类型标志,第一分区的此处素日为06H,透露显示C盘为活动DOS分区,若对第一分区的此处中止批改可对硬盘起到一定加密浸染。 详细表现为: 1.若将该字节改为0,则透露显示该分区未运用,当然不能再从C盘启动了。从软盘启动后,原来的C盘不见了,你看到的C盘是原来的D盘,D盘是原来的E盘,依此类推。 2.若将此处字节改为05H,则不但不能从硬盘启动,即使从软盘启动,硬盘的每个逻辑盘都弗成接见,多么等于整个硬盘被加密了。另外,硬盘主指导记录的有效标志是该扇区的最后两字节为55AAH。若将这两字节变为0,也可以完成对整个硬盘加锁而不能被接见。硬盘分区表在物理0柱面0磁头1扇区,可以用Norton for Win95中的Diskedit直接将该扇区调出并批改后存盘。或者在Debug下用INT 13H的02H子功用将0柱面0磁头1扇区读到内存,在响应位置中止批改,再用INT 13H的03H子功用写入0柱面0磁头1扇区就可以了。

上面的加密措置,对通俗用户来讲已足够了。但对有阅历的用户,即使硬盘弗成接见,也可以用INT 13H的02H子功用将0柱面0磁头1扇区读出,根据阅历将响应位置数据中止批改,可以完成对硬盘解锁,因为这些位置的数据素日是固定的或有限的几种景遇。另外一种保险但显得笨拙的方法是将硬盘的分区表项备份起来,然后将其悉数变为0,多么别人由于不知道分区信息,就无法对硬盘解锁和接见硬盘了。 二、对硬盘启动加口令 我们知道,在CMOS中可以设置系统口令,使非法用户无法启动比赛争论机,当然也就无法运用硬盘了。但这并未真正锁住硬盘,因为只需将硬盘挂在其他比赛争论机上,硬盘上的数据和软件仍可运用。要对硬盘启动加口令,可以首先将硬盘0柱面0磁头1扇区的主指导记录和分区信息都储存在硬盘并不运用的隐含扇区,比如0柱面0磁头3扇区。然后用Debug重写一个不超越512字节的轨范(理论上100多字节足矣)装载到硬盘0柱面0磁头1扇区。该轨范的功用是执行它时首先需求输进口令,若口令纰谬则进入死轮回;若口令正确则读取硬盘上存有主指导记录和分区信息的隐含扇区(0柱面0磁头3扇区),并转去执行主指导记录。 由于硬盘启动时首先是BIOS调用自举轨范INT 19H将主硬盘的0柱面0磁头1扇区的主指导记录读入内存0000:7C00H处执行,而我们曾经偷梁换柱,将0柱面0磁头1扇区变为我们自己设计的轨范。多么从硬盘启动时,首先执行的不是主指导轨范,而是我们设计的轨范。在执行我们设计的轨范时,口令若纰谬则无法继续执行,也就无法启动了。即使从软盘启动,由于0柱面0磁头1扇区不再有分区信息,硬盘也不能被接见了。当然还可以将我们设计的轨范像病毒一样,将个中一部分驻留在高端内存,看守INT 13H的运用,防止0柱面0磁头1扇区被改写。

c语言课程设计-文件加密解密(含源代码)

C 语 言 课 程 设 计 实 验 报 告 实验名称:文件加密解密 院系:软件学院 学号: 日期:2012年9月3日—9月17日

一:设计题目 1:设计图形用户界面。 2:对文件进行加密并对加密文件进行保存。 3:对加密了的文件进行解密。 二:设计过程 设计过程中遇到的困难和解决方法: 1:不能很好地理解题意(通过老师的讲解)。 2:不知道如何设计加密解密程序(通过翻阅书籍和上网查找资料) 过程: 首先通过学习老师提供的资料了解大致的设计过程并懂得运用一些以前没有学习过的c语言。先利用文本文件设计出加密解密的主要过程并能运行。知道如何运用fopen将原文件打开并用fread将原文件内容读出来,然后进行加密设计并将加密的数据用fwrite写进指定的文件中并保存。然后读出加密的文件并解密并保存。最后在写出的程序中加入图形用户界面,运用window,box,gotoxy等进行设计。 三:源代码 #include /* 标准输入、输出函数 */ #include /* 标准库函数 */ #include //*字符串处理函数 */ #include /* 字符操作函数 */ #include #include #define key_down 80 #define key_up 72

#define key_esc 1 #define key_enter 28 #define SIZE 1 void box(int startx,int starty,int high,int width); int get_key(); char buf[20*20*4]; /*///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////加密解密 */ void fun(char *list,char *sd) /*加密过程*/ { FILE *fp1,*fp2; char buf[1000]; /*文件临时存放处*/ register int ch; fp1=fopen("e:\list.txt","r"); /*用可读方式打开文件*/ fp2=fopen("e:\sd.txt","w"); /*用可写方式创建一个文件*/ if(fp1==NULL) { printf("cannot open file\n"); exit(1); } if(fp2==NULL) { printf("cannot build file\n"); exit(1); } ch=fgetc(fp1); /*读出打开文件的光标处的一个字符*/ while(!feof(fp1)) /*读出的字符不是最后的字符*/ { ch=ch<<1; /*加密方法*/ fputc(ch,fp2); /*加密的字符存放在指定的地方*/ ch=fgetc(fp1); } rewind(fp2); /*将光标移动到第一个字符前面*/ fread(buf,sizeof(buf),1,fp2); /*从文件的当前位置开始中读取buf中存放的数据*/ printf("%s",buf); /*fclose(fp1); fclose(fp2); */ }

实现加密解密程序

目录 一.摘要 (1) 二.网络安全简 (2) 安全技术手段 (3) 三.现代密码技术分类 (3) 1.对称密码体制 (4) 2.非对称密码体制 (4) 四.RSA加密解密体制 (5) 1.RSA公钥密码体制概述 (5) 2.RSA公钥密码体制的安全性 (6) 3.RSA算法工作原理 (6) 五.实现RSA加密解密算法 (7) 六.RSA的安全性 (11) 七.结语 (13)

实现加密解密程序 摘要:随着计算机网络的广泛应用,网络信息安全的重要性也日渐突出,计算机信息的保密问题显得越来越重要,无论是个人信息通信还是电子商务发展,都迫切需要保证Internet网上信息传输的安全,需要保证信息安全;网络安全也已经成为国家、国防及国民经济的重要组成部分。密码技术是保护信息安全的最主要手段之一。使用密码技术可以防止信息被篡改、伪造和假冒。加密算法:将普通信息(明文)转换成难以理解的资料(密文)的过程;解密算法则是其相反的过程:由密文转换回明文;密码机包含了这两种算法,一般加密即同时指称加密与解密的技术。 关键字:密码技术、加密算法、解密算法、密码机、RSA 正文 一、网络安全简介 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。网络安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。 网络安全的具体含义会随着“角度”的变化而变化。比如:从用户(个人、企业等)的角度来说,他们希望涉及个人隐私或商业利益的信息在网络上传输时受到机密性、完整性和真实性的保护,避免其他人或对手利用窃听、冒充、篡改、抵赖等手段侵犯用户的利益和隐私。 二、安全技术手段

几种常用的单片机加密方法

几种常用的单片机加密方法 一、加密方法 1、烧断数据总线。这个方法我想应不错,但应有损坏的风险,听说也能**。 2、芯片打磨改型,这个方法有一定作用,改了型号能误导,但同时也增加成本,解密者一般也能分析出来。 3、用不合格的单片机的的存储器:这个方法听起来不错,值得一试。很多单片机有这种情况,有的是小容量改为大容量来用,**者应很难发现。例:8031/8052 单片机就是8731/8752掩模产品中的不合格产品,内部可能有ROM。可把8031/8052 当8751/8752 来用.但使用时要测试可靠。 4、其他还有添加外部硬件电路的加密方法。但那样增加成本,效果不一定好。 5、软件加密,是一些防止别人读懂程序的方法,单一的这种方法不能防止别人全盘复制。须配合其他的加密方法。 6、通过序列号加密, 这个方法当你的产品是连接PC时或网络,我想是一个比较理想的方法。原理跟电话产品防伪标志相近。就是在你的单片机中生成一个唯一的随机长序列号,并加入复杂的特种算法,或加入你们重新编码的企业信息在里面,每个芯片内不同,复制者只能复制到一个序列号。这个方法不能防止复制,但能发现复制品,并可在升级或在网络状态控制它或让他自毁。如果产品不联机或不可升级,则这个方法完全无效,只能是在上法院时可当作证据,因为内含特种算法破解者是无法知道的。 7、通过单片机唯一的特性标识(不可修改)进行加密

这个方法最好,能很好的防止复制。但大多单片机没有唯一标识。STC单片机里面含唯一标识,但本人没用过,下次一定要研究使用一下。理论上只要含唯一标识是单片机都可实现,ATMEL AVR系列单片大部分型号有RC校正字节(几十个芯片才有一个相同,并且不可修改)能实现这个理想功能,可做到即使芯片内程序被读出也无法直接在另一个同型号的单片机上正常运行。并且如果用这个唯一标识来生成含有加密算法的序列号,结合第6种方法,哪应是最理想的加密方法。 以上方法应都是一种加密的思路,各种方法可接合着用,6、7两种方法是本人认为比较合适,实现起来比较容易的方法。后面将重点介绍两种加密方式的实现方法。 二、序列号加密实现方法 1、原理 就是在存储器某个区块放入一个唯一的序列号(长一点,无规律),每个芯片不同。原理跟电话产品防伪标志相近 | PC机 | <------------>| 带自定义算法序列号单片机系统 | 控制方法: 1、PC根据传回来的序列号根据算法判断是否合法,合法就运行,不合法处理它。当然,如果是**的序列号,可自毁。 2、单片机内部的序列号经加密算法处理,单片机系统同样要防止软件被更改,可在单片机内部加入CRC等数据校验。一般情况下,序列号如果不合算法,单片机系统应让程序运行出错,这样**者一般不会去修改序列号,如果修改了也没关系,因为PC还能判断是否合法。 3、序列号传送时可采用双向加密算法认证,相当于银卡的数据交换方式。

java文件加密课程设计

结业报告 课程名称:网络安全技术 设计题目:java实现文件加密 系别:***学院 专业:*************** 组员:**************************起止日期***************** 指导教师:***

摘要 目前世界范围内的信息安全问题越来越严重。解决信息安全问题涉及面很广,它包括技术,管理.制度,人员和法律等诸多方面,但最核心部分是密码技术。密码技术是实现一种变换,它使得对大量信息的保护变为对少量密钥的保护。 本次结业设计以文件的加密与解密问题为主要研究讨论方向。先对加密技术进行查找资料。然后对加密方法进行概述,而后对3DES加密进行详细介绍何分析,并对结业设计成果进行演示,最后附上代码。由于本次结业设计时间仓促外加能力有限,有诸多不足之处以及可能存在某些为发现错误还请批评指正。感谢之至。 关键词:加密解密密钥 3DES Abstract At present, the problem of information security is more and more serious in the world. To solve the problem of information security involves a wide range, including technology, management, system, personnel and law, etc., but the most important part is the password technology. Password technology is to achieve a transformation, which makes the protection of a large number of information into a small number of key protection. The graduation project to document encryption and decryption issues as the main research and discussion. First, the encryption technology to find information. Then the encryption method is outlined, and then the 3DES encryption for detailed analysis, and the completion of the design results are demonstrated, and finally attached to the code. Due to the limited capacity of the completion of this graduation project, there are many deficiencies and there may be some to find errors also please criticism. Thanks to.

加密解密常用函数

本帖最后由小平于2013-6-22 10:05 编辑 #region DES加密解密 ///

/// DES加密 /// /// 待加密字串 /// 32位Key值 /// 加密后的字符串 public string DESEncrypt(string strSource) { return DESEncrypt(strSource, DESKey); } public string DESEncrypt(string strSource, byte[] key) { SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode = CipherMode.ECB; sa.Padding = PaddingMode.Zeros; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write); byte[] byt = Encoding.Unicode.GetBytes(strSource);

cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } ///

/// DES解密 /// /// 待解密的字串 /// 32位Key值 /// 解密后的字符串 public string DESDecrypt(string strSource) { return DESDecrypt(strSource, DESKey); } public string DESDecrypt(string strSource, byte[] key) { SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode = CipherMode.ECB; sa.Padding = PaddingMode.Zeros; ICryptoTransform ct = sa.CreateDecryptor();

相关主题
文本预览
相关文档 最新文档