java文件的加密与解密

java文件的加密与解密
java文件的加密与解密

课程设计

课程设计名称:Java课程设计

专业班级:

学生姓名:

学号:

指导教师:

课程设计时间:2013.6.10-2013.6.21

文件的加密与加密

一、需求分析

1.基本要求:

1.实现文件的加密与解密。

2.使用GUI 完成设计工作。

2.具体分析:

1.向图形用户界面中添加组件,其中窗口中包括四个按钮,一个文本框,一个文本区。

2.设置各个组件的布局,其中文本框和加添加保存按钮在最上面,文本区在中间,加解密按钮在最下面。

3.添加窗口事件,其中包括添加事件、保存事件、加密事件和解密事件。

4. 查找读入及写入文件,并显示在文本区。

5.加密功能实现,其中已加密的文件不能重复加密。

6.解密功能实现,其中未加密的不能解密。

7.保存功能的实现

二、概要设计

图2-1设计模块图

主菜单

添加文件功能 保存文件功能 加密文件功能 解密文件功能

开始

添加文件

弹出文件加密器

对话框

添加文件的内容

显示在文本区

加密解密

加密后的内容显示在文本区解密后的内容显示在文本区

点击“保存”,选择路径,生成新文件,并以“.txt”

结束

图2-2设计流程图

三、运行环境、开发语言

开发环境:JDK1.6

开发语言:java语言

四、详细设计

1 程序清单

表1程序清单

函数名功能

openFile() 添加文件

jiamiFile() 加密文件

jiemiFile() 解密文件

saveFile() 保存文件

2 主要代码

2.1 主窗口显示功能

此部分主要是主窗口界面,显示文本框、按钮和文本区。该功能截图如图图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 JButton("加密");

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(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(){

@Override

public void actionPerformed(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 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;//已加密

content=content.substring(0,content.length()-M.length());

}

else{

mark=2;//未加密

}

reader.close();

namearea.setText(content);

}

图4-2添加文件功能

2.3 加密文件功能

本程序采用简单的加密算法,加密之前必须得输入密钥,判断是否加过密,让后把从文本区获得的文本文件初始化,存放到一个数组中,然后进行异或运算,把结果重新存放于该数组中,从而显现在“文件浏览窗口”中。该功能截图如图图4-3、4-4。具体代码如下:

图4-3输入密钥功能

图4-4加密功能

2.4 解密文件功能

解密操作其实同加密操作相同,依旧首先打开加密后的文件,让后判断是否加密,使其显示在文本区中,再同样对数组里的元素进行初始化,进行异或运算,即可得到解密后的文件,再显示到“文件浏览窗口”中。该功能截图如图图4-5。具体代码如下:

//解密事件

button4.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

try {

jiemiFile();

} catch (IOException e1) {

}

}

});

//解密

public void jiemiFile() throws IOException{

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

int j=0;

if(mark==1){

String M1=JOptionPane.showInputDialog(null,"请输入密钥(密钥是6位):");

if (M1.equals(M))

{

namearea.setText(null);

char secret='a';

for(int i=0;i

{

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

namearea.append(""+c);

}

mark=2;

JOptionPane.showMessageDialog(null,"解密成功!","温馨提示",

JOptionPane.W ARNING_MESSAGE);

}

else

{

JOptionPane.showMessageDialog(null,"密钥输入错误,请重新输入:","温馨提示",

JOptionPane.W ARNING_MESSAGE);

}

}

else{

JOptionPane.showMessageDialog(null,"此文件已经解密或者尚未加密,请重新选择!","温馨提示",

JOptionPane.W ARNING_MESSAGE);

}

}

图4-5解密文件功能

2.5 保存文件功能

可以选择是否保存加密后的文本文件。因为加密后的文件先显示在文本区中,之后选择“保存”,即可弹出“保存对话框”,进行查找写入文件,写入字符流,从而实现保存。该功能截图如图图4-6。具体代码如下:

//保存事件

button2.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

JFileChooser chooser=new JFileChooser(".");

chooser.showSaveDialog(Myframe.this);

file=chooser.getSelectedFile();

try {

saveFile();

} catch (IOException e1) {

}

}

});

//保存文件

public void saveFile() throws IOException{

content=namearea.getText();

FileWriter out=new FileWriter(file);

out.write(content);

if(mark==1){

out.write(M);

}

out.close();

JOptionPane.showMessageDialog(null,"保存成功!","温馨提示",

JOptionPane.W ARNING_MESSAGE);

}

图4-6文件保存功能

五、调试与分析

…………………………………………………………………………………………………………………………………………..

六、功能测试

加密之前的:

加密之后的:

解密之前的:

解密之后的:

七、结论与心得

……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

八、参考资料

[1]刘继承,王社伟,宋敏.JAVA程序设计及其实验.清华大学出版,2012.7

[2] https://www.360docs.net/doc/d016185823.html,/softwave/article/details/571988

源代码

import java.awt.*;

import java.io.*;

import javax.swing.*;

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 = 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("解密");

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(namearea);

add(scrollPane);

//打开事件

button1.addActionListener(new ActionListener(){

@Override

public 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(){

@Override

public void actionPerformed(ActionEvent e) {

JFileChooser chooser=new JFileChooser(".");

chooser.showSaveDialog(Myframe.this);

file=chooser.getSelectedFile();

try {

saveFile();

} catch (IOException e1) {

}

}

});

//加密事件

button3.addActionListener(new ActionListener(){ @Override

public void actionPerformed(ActionEvent e) { try {

jiamiFile();

} catch (IOException e1) {

}

}

});

//解密事件

button4.addActionListener(new ActionListener(){ @Override

public void actionPerformed(ActionEvent e) { try {

jiemiFile();

} catch (IOException e1) {

}

}

});

setSize(750, 600);

setLocation(100, 100);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

//打开文件

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;//已加密

content=content.substring(0,content.length()-M.length());

}

else{

mark=2;//未加密

}

reader.close();

namearea.setText(content);

}

public void jiamiFile() throws IOException{

content="";

String line="";

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

if(mark==2){

M=JOptionPane.showInputDialog(null,"请输入密钥(1位):");

namearea.setText(null);

char secret='a';

for(int i=0;i

{

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

namearea.append(""+c);

}

mark=1;

JOptionPane.showMessageDialog(null,"加密成功!","温馨提示",

JOptionPane.WARNING_MESSAGE);

}

else{

JOptionPane.showMessageDialog(null,"此文件已经加密,请重新选择!","温馨提示",

JOptionPane.WARNING_MESSAGE);

}

}

public void jiemiFile() throws IOException{

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

int j=0;

if(mark==1){

String M1=JOptionPane.showInputDialog(null,"请输入密钥(密钥是6位,您有三次机会):");

if (M1.equals(M))

{

namearea.setText(null);

char secret='a';

for(int i=0;i

{

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

}

mark=2;

JOptionPane.showMessageDialog(null,"解密成功!","温馨提示",

JOptionPane.WARNING_MESSAGE);

}

else

{

JOptionPane.showMessageDialog(null,"密钥输入错误,请重新输入:","温馨提示",

JOptionPane.WARNING_MESSAGE);

M1=JOptionPane.showInputDialog(null,"请输入密钥(密钥是6位,您还有两次机会):");

JOptionPane.showMessageDialog(null,"密钥输入错误,请重新输入:","温馨提示",

JOptionPane.WARNING_MESSAGE);

M1=JOptionPane.showInputDialog(null,"请输入密钥(密钥是6位,您只有一次机会了):");

JOptionPane.showMessageDialog(null,"密钥输入错误,您的机会已用完:","温馨提示",

JOptionPane.WARNING_MESSAGE);

}

}

else{

JOptionPane.showMessageDialog(null,"此文件已经解密或者尚未加密,请重新选择!","温馨提示",

JOptionPane.WARNING_MESSAGE);

}

}

//保存文件

public void saveFile() throws IOException{

content=namearea.getText();

FileWriter out=new FileWriter(file);

out.write(content);

if(mark==1){

out.write(M);

}

out.close();

JOptionPane.showMessageDialog(null,"保存成功!","温馨提示", JOptionPane.WARNING_MESSAGE);

}

文件加密与解密—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类结构图

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); } });

加密解密课程设计

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

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

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

如何给word文档加密和解密

如何给WORD文档加密 如果Word文档不希望别人随便查看,可以通过添加打开密码来实现(当然这并不是绝对安全的)。为Word文档添加密码,给Word文档加密主要有以下几个方法: 文件加密文件菜单设置: 如果您使用的是Office word2003: 方法一: 启动Word2003(其他版本操作相似,下同),打开需要加密的文档,执行“工具→选项”命令;如下图 2、在弹出的“选项”中,选择“安全性”,然后在“打开文件时的密码”后面输入密码(一定要牢记密码哦);如下图

3、单击确定按钮后会再次提示你确认密码;再次输入刚才的密码,然后确定,加密即可成功(注意:经过加密设置后,以后需要打开该文档时,需要输入正确的密码,否则文档不能打开)。如下图

方法二:在对新建文档进行“保存”或对原有文档进行“另存为”操作时,打开“另存为”对话框。单击工具栏上的“工具”按钮,在随后弹出的下拉列表中,选“安全选项”,打开“安全选项”对话框,在“打开文件时的密码”右侧的方框中输入密码,按下确定按钮,再确认输入一次密码,确定退出,然后保存当前文档即可。 如果您使用的是Office word2007 Office Word2007无论是在界面上,还是操作上,以我们用习惯了的Word2003不大一样了。Word2007就也有有两种方法可以实现: 方法一: 1、打开文档,同样“Office按钮”,然后选择“另存为”,然后在保存文档副本中选择“Word文档”;如下图

2、在“另存为”对话框中单击下面的“工具”按钮,在下拉菜单中选择“常规选项”;如下图

3、在弹出的“常规选项”对话框中可以任意给Word文档加密。如下图

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

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

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

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

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

文件加密与解密实验报告

HUNAN UNIVERSITY 程序设计训练——文件加密与解密 报告 学生姓名X X X 学生学号20110102308 专业班级建环308 指导老师何英 2012-07-01至 2012-07-13

一、程序设计目的和要求 (3) 二、程序设计内容 (4) 1、总体设计 (4) 1.1主控选择模块 (4) 1.2加密模块 (4) 1.3解密模块 (4) 2、流程图 (5) 三模块详细说明 (6) 四、测试数据及其结果 (7) 五、课程设计总结 (8) 六、附录 (9) 附录1:参考文献 (9) 附录2:程序源代码 (9)

一、程序设计目的和要求 1、目的:为保证个人数据资料不被他人窃取使用,保护个人隐私及个人文件。设计一个基于c语言的文本文件加密及解密软件,可以方便对文本文件的加密与解密。本设计实现了文本文件的解密及解密,运行软件之后只需输入任意一个文本文件的文件名及后缀名即可对该文本文件进行加密或解密操作。本设计的加密与解密系统,使用了面向各类文件的方法,运用Microsoft Visual C++ 6.0实现具有加密、解密、帮助信息、读取文本文件、显示结果、退出等功能的文件加密与解密系统。 2、要求: (1)从键盘输入要进行加密的一行字符串或者需要加密的文件名。 (2)显示菜单: (3)选择菜单,进行相应的操作。加密方法是设置一加密字符串以及对文件的哪些部分进行加密;加密是将原始文件加密并保存到文件中;解密是将加了密的文件还原并保存到文件中,同时应比较与原始文件的一致性; 3、其他要求 (1)变量、函数命名符合规范。 (2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。

加密技术及密码破解实验报告

第九章、实验报告 实验一、设置Windows启动密码 一、实验目的:利用Windows启动密码保存重要文件。 二、实验步骤: 1、在Windows XP系统中选择开始——运行,在打开输入框中“syskey.exe”,点击确定,打开“保证Windows XP账户数据库的安全”对话框。 2、单击【更新】,打开【启动密码】对话框,然后输入密码,在【确认】文本框中再次输入密码,单击【确定】

实验二、为word文档加密解密 一、实验目的:保护数据的安全 二、实验步骤: 1、打开一个需要加密的文档,选择【工具】——【选项】——【安全性】然后输入想要设置打开文件时所需的密码 2、单击【高级(A)】打开加密类型对话框,选中【加密文档属性】复选框,单击【确定】。

3、打开文件的【确认密码】对话框,输入打开文件时需要的密码,单击【确定】,随即打开【确认密码】对话框,输入密码。 4、保存文件后,重新打开Word文档,打开【密码】,输入打开文件所需的密码,单击【确定】输入修改的密码,单击【确定】 破解word密码 (1)安装Advanced Office Password Recovery软件,安装完成后打开需要破解的word 文档,进行暴力破解,结果如图所示: 实验三、使用WinRAR加密解密文件

一.实验目的:加密文件,保证文件的安全性。 二.实验步骤: 1、在需要加密的文件夹上右击,选中【添加到压缩文件】打开【压缩文件名和参数】 2、选中【压缩文件格式】组合框中的【RAR】并在【压缩选项】中选中【压缩后删除源文件】然后切换到【高级】,输入密码,确认密码。 3、关闭对话框,单击确定,压缩完成后,双击压缩文件,系统打开【输入密码对话框】 破解WinRAR加密的文件 (1)安装Advanced RAR Password Recovery软件,打开WinRAR加密文件,进行暴力破解,获得密码。结果如图:

文件加密系统课程设计

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

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

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

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); */ }

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.

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

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

JAVA课程设计题目:文件的加密与解密 姓名: 学号: 班级: 日期: 指导老师 分数

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

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

件,这样就将密文、算法参数、解密密钥三都密封到一个对象中了。口令的hash值作为产生密钥的参数。设计流程图如下所示: 设计文件加密解密的界面 实现hash算法,用于产生口令的hash值 实现由口令hash值产生密钥的算法 实现文件加密算法加密按钮事件实现文件解密算法解密按钮事件 文件加密与解密设计流程图 本系统中,包含

文本的加密与解密课程设计说明书

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2014年春季学期 工程开发综合训练课程设计 题目:文本文档的加密与解密 专业班级: 计算机科学与技术11级4班 姓名:张有刚 学号: 11240417 指导教师:刘树群 成绩:

目录 摘要 (1) 1。问题描述 (2) 2。系统设计 (3) 3。系统实现 (5) 4.系统测试 (8) 5。总结 (13) 参考文献 (13)

摘要 随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生.文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等.但是这些算法虽然原理简单,但具体实现起来却非常繁琐复杂,故而本程序设计对文件的加密使用的是最基础的异或加密算法。 Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。Java是一门很优秀的编程语言,是目前软件设计中极为健壮的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发。Java确实具备了“一次写成,处处运行”的特点,所以,Java已经成为网络时代最重要的编程语言之一。本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。 使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善, 满足了用户对文件安全性的需求. 关键词: JAVA ,加密,解密

1.问题描述 本设计要求学生开发一个在Windows操作系统下,利用DES加密算法,开发出一款能够对文本信息进行加密与解密的软件。通过对文本信息特点的分析,设计出相应的DES加密算法,同时,根据DES加密过程设计出解密算法,画出相应的流程图,实现对文本文件的加密和解密,写出软件说明书,并提出日后的升级维护意见。 此外,学生通过该题目的设计过程,可以初步应用软件系统的开发原理和开发方法,全面培养软件开发过程中的分析、设计、编码、测试及文档规范书写的能力,得到软件工程的训练,提高解决实际问题的能力。 (1)用图形用户界面实现软件界面,整体布局合理,美观大方。 (2)用56位秘钥对文本进行加解密。 (3)能够对一般的文本文件包括扩展名为doc和txt的文件进行直接加解密。(4)能够实现对中英文文本的加解密。 (5)系统的开发可以采用Java或C++等编程语言来实现; (6)在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。

加密解密课程设计

兰州商学院陇桥学院 工学系课程设计报告 课程名称: 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、解密功能实现;

java文件加密解密课程设计

课程设计报告书 课程名称面向对象程序设计 设计题目文本文档的加密与解密 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); } });

单片机电子密码锁课程设计

基于单片机的电子密码锁设计 一、设计要求和条件 1.1 设计要求 根据单片机开发板所提供的元件特性和硬件电路,编写相关的程序,通过实验开发板实现电子密码锁在LCD1602上显示的功能。 1.搭建proteus仿真电路图平台,模拟单片机要实现的功能; 2.焊接单片机系统开发板; 3.编写程序,实现密码锁相关功能; 4.下载并调试程序,实现密码锁的具体功能。 1.2 设计目的 1.熟练掌握KEIL软件的使用方法; 2.熟练掌握PROTEUS软件的使用方法; 3.掌握单片机I/O接口的工作原理; 4.掌握中断系统的工作原理; 5.掌握液晶LCD1602的工作原理及编程方法; 6.掌握蜂鸣器的编程使用; 7.掌握行列式键盘的工作原理及编程使用方法; 8.掌握单片机的ISP下载使用方法。 1.3 功能概述 本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了硬件设计方案、软件流程图、C 语言源程序及详细注释等内容,由于单片机实验板上的矩阵键盘为3*3的,则规定0-5号键为数字键,6-8号键为功能键,其中该密码锁的具体功能介绍如下: (1)按“8”号键则输入密码,初始密码为012345,在LCD1602上显示密码值为“******”(密码是保密的),输完6位后键盘就锁定,在LCD1602上显示密码是否正确,若输入的密码长度小于6位,则1602等待密码输入。 (2)若密码输入正确后,则绿色的发光二极管亮表示开锁,并且1602上显示“you are right!”,等待是否修改密码。

(3)密码输入错误时显示“code is wrong”,接着会给你第二、第三次机会输入密码,如果三次密码都错误时,发出“叮咚”的报警声,且红色报警指示灯不停闪烁,按复位键清除报警。 (4)按“7”号键表示若密码不小心输入时,可以删除输入错误的密码。 (5)按“6”修改密码,要求输入原密码是正确的,然后按该键后,蓝色密码修改指示灯会亮,并且1602上会显示“Input new code”,输入正确要求再次输入,两次输入一致提示“Modify right!!!”并返回主菜单。两次不一致时提示“Modify error!!!”,然后返回主菜单。 二、硬件设计方案的论证 本系统整体主要划分为五大模块,分别是由单片机最小系统、矩阵键盘、LCD显示、报警系统、指示灯电路等组成。单片机系统主要功能是对外部输入的数据进行处理,显示电路将所要操作的步骤显示出来,指导用户使用,报警电路是对输入错误密码时的警告报警。系统能完成开锁、密码输入错误报警、密码删除、修改用户密码基本的密码锁的功能。若依据实际的实验板情况还可以添加遥控和掉电保护功能。 2.1 总体方案设计 本设计的具体总模块设计方案如下图(1)所示 图(1)硬件总方案模块框图 2.2 具体模块方案的设计 1.主控芯片的方案选择 方案一:采用硬件电路进行电子密码锁设计,比如使用 74LS112 双

网络信息安全课程设计

郑州轻工业学院 课程设计说明书 题目:网络信息安全课程设计 设计具备SSL安全协议的小型企业网 姓名: 院(系):国际教育学院 专业班级: 学号: 指导教师:尹毅峰程立辉 成绩: 时间:2012 年 6 月18日至2012 年6 月22日

郑州轻工业学院 课程设计任务书 题目网络信息安全课程设计 专业、班级学号姓名 主要内容、基本要求、主要参考资料等: 1.主要内容 设计具备SSL安全协议的小型企业网: 实现一个安全的可用于身份验证的企业网站,能够抵抗大多数的攻击。网站中包含一个CA系统,可以接受用户的认证请求,安全储存用户信息,记录储存对用户的一些认证信息,给用户颁发证书,可以吊销。 2.基本要求: 1)接受用户的提交申请,提交时候让用户自己产生公钥对; 2)接受用户的申请,包括用户信息的表单提交,公钥的提交; 3)在对用户实施认证的过程中,储存相应的电子文档,比如证书、营业执照的扫描文档; 4)通过验证的给予颁发证书; 5)用户密钥丢失时,可以吊销证书,密钥作废。 主要参考资料 完成期限: 指导教师签名: 课程负责人签名: 2012年 6 月 20日

目录 1.前言 (1) 2.系统分析 (2) 2.1具备CA系统的企业网站设计 (2) 2.2功能要求: (2) 3.功能设计 (2) 3.1安装必要组件 (2) 3.1.1安装Internet 信息管理器 (2) 3.1.2安装Active Directory (3) 3.1.3安装CA证书 (3) 3.2配置Internet 信息管理器 (3) 3.3 在Web服务器上安装证书 (4) 3.4针对网站设置SSL (5) 3.5导入网站 (5) 4.所遇到的问题及分析解决 (8) 4.1所遇问题 (8) 4.2分析解决 (8) 5.测试 (9) 5.1 服务器测试 (9) 5.2 客户端测试 (9) 6.结论 (10)

DES文件加密实验报告

DES文件加密实验报告 一、DES算法简介 DES是Data Encryption Standard(数据加密标准)的缩写。它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准,二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色。 DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位(因为每个第8 位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开他们。所以保密性依赖于密钥。 二、用C#实现DES文件加密 指定文件,输入密钥来加密和解密数据。DESCryptoServiceProvider基于对称加密算法。Symmetricencryption 需要一个密钥和一个初始化向量(IV) 加密请。要解密的数据,必须具有相同的密钥和IV。使用的加密提供程序来获取encryptingobject (CreateEncryptor) 创建CryptoStream类的一个实例,现有输出文件流对象的构造函数的一部分。 要解密文件,执行以下步骤:创建一个方法,并命名该按钮DecryptFile.解密过程是类似于theencryption 进程,但是,DecryptFile过程从EncryptFile过程的两个主要区别。而不是CreateEncryptor使用CreateDecryptor来创建CryptoStream对象,用于指定如何使用该对象。解密的文本写入目标文件,CryptoStream对象是现在而不是目标流的来源。 三、运行环境 可将DES文件加解密软件的可执行.exe文件直接在xp,win7等系统上运行。 四、实验结果 1、开始界面 2、打开要加密文件、输入密钥

密码学课程设计报告(文件加密解密系统)

密码学课程设计 实验报告 实验题目:文件加密/解密系统

实验任务书

第一章、AES加密解密原理 由于DES已经无法满足高保密性的要求,美国于1997年1月开始征集新一代数据加密标准(即高级数据加密标准,Advanced Encryption Standard,AES)。2000年10月2日,正式宣布选择比利时密码学家所开发的Rijndael算法成为AES的最终算法。 AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。 1.1AES算法设计及性能研究现状: 目前在理论上对于AES算法的研究主要集中在算法设计和性能分析上。 1.1.1算法设计主要研究算法设计遵循的原则和整体结构。研究算法设计的目的一方面为性能分析提供了一条途径,从算法的结构上分析算法性能是简单有效的,研究算法整体结构上的缺陷为提出新的密码分析方法提供新的手段。另一方面,研究AES的算法设计对研发新的分组密码提供了设计原则和参考。目前分组数据加密算法的整体结构有两大类:Festiel 网络、非平衡网络和SP网络。作为AES选择的Rijndael算法遵循分组密码的安全性和实现性原则,在整体结构上采用的是SP网络结构。 1.1.2 性能分析主要研究算法的各项特性,主要可以分为实现分析和密码分析两类。 (1)实现分析主要研究AES算法可实现的能力,即算法的实现性分析。当前实现性分析主要集中在AES的硬、软件实现的难易度和实现算法的效率等领域中。 (2)密码分析主要研究AES算法抵抗现有己知密码攻击的能力,即算法的安全性分析。除此之外,由于S-盒是AES算法的唯一非线性变换器件,S-盒的性能在很大程度上决定了AES算法的安全性。因此,出现了许多分析和研究S-盒代数性质的研究成果。在这些成果中分析了S-盒的代数特征或是表达S-盒的线性方程组,以达到求解S-盒或是研究S-盒安全性的目的。 1.2AES算法基础: 1.2.1AES算法的数学基础 定义一一个由b7b6b5b4b3b2b1b0组成的字节b可表示成系数为{0,1}的二进制多项式 b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0x0 定义二在GF(28)上加法的定义为二进制多项式的加法,且其系数模2。 定义三在GF(28)上乘法(用符号·表示)定义为二进制多项式的乘积模一个次数为8的不可约多项式.此不可约多项式为(十六进制为‘11B’) m(x) = x8+x4+x3+x+1 上面定义的乘法在GF(28)上满足结合律,且有一个本原元(01)。 例如: (57)16(83)16 = (x6+x4+x2+x+1)( x7+x+1) =x13+x11+x9+x8+x7+x7+x5+x3+x2+x+x6+x4+x2+x+1 = (x13+x11+x9+x8 +x6+x5+ x4+x3 +x+1) mod (x8+x4+x3+x+1) = x7+x6+1 = (C1) 16 定义四在GF(28)上的二进制多项式b(x)的乘法逆为满足下面方程式的二进制多项式a(x),记为b-1(x).

C语言加密解密课程设计报告

大学课程设计 文件的加密解密— 单位数理系分院(系) 专业应用物理 ) 学号 学生姓名 指导教师 完成日期 2010 年 9 月 17日

摘要 } 进行程序的加密解密是现在对文件保护的一种重要措施。传统的文件保护方法只是对文件进行封存。随着计算机和网络技术的迅速发展,越来越多的人意识到文件加密的重要性,而采用一定的程序对文件进行加密正是现在人们对文件保护的一种必要手段。 文件加密技术是通过相应程序对文件进行加密,它有许多优点,例如:可以对任意文本文档进行不同种类的加密,对原文件不造成破坏,同时可以将加密后的文件保存起来用于传输。程序灵活性强,可以随时进行加密解密。用户可以根据需要使程序完成相应功能。 本文采用C程序,实现了所述功能中的全部内容。 论文首先介绍了程序的设计思路,其中包括相应的流程图。其次,介绍了函数的主要功能。最后,利用C语言环境编辑程序实现了全部功能,并作了详细描述。 关键词:文件加密,功能,文件,C程序。

目录 … 第1章选题的意义…………………………………………………………………………… 错误!未定义书签。 文件加密的意义……………………………………………………………………错误!未定义书签。 设计程序的意义…………………………………………………………………错误! 未定义书签。 第2章系统功能需求分析…………………………………………………………………… 错误!未定义书签。 系统的基本要求…………………………………………………………………错误! 未定义书签。 功能设计…………………………………………………………………………错误! 未定义书签。 第3章系统设计……………………………………………………………………………… 错误!未定义书签。 设计思路 (6) 【 程序模块 (7) 功能图 (7) 函数分析 (11) 第4章系统实现……………………………………………………………………………… 错误!未定义书签。 第5章总结…………………………………………………………………………………… 错误!未定义书签。

相关文档
最新文档