搜档网
当前位置:搜档网 › 密码学课程设计报告(文件加密解密系统)

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

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

密码学课程设计

实验报告

实验题目:文件加密/解密系统

实验任务书

第一章、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).

a(x)b(x) mod m(x) = 1.

b-1(x) = a(x) mod m(x).

00除外,00的逆元还是00。

定义五 GF(28)上的多项式加法定义为相应项系数相加。

因为在域GF(28)上的加是简单的按位异或,所以在域GF(28)上的两向量的加也就是简单的按位异或.

定义六 GF(28)上的多项式a(x) = a3x3+a2x2+a1x1+a0x0和b(x) = b3x3+b2x2+b1x1+b0x0相乘模x4 + 1 的积(表示为c(x) = a(x)⊕b(x))为c(x) = c3x3+c2x2+c1x1+c0x0,其系数由下面4个式子得到:

c0 = a0·b0⊕a3·b1⊕a2· b2⊕a1·b3,

c1 = a1·b0⊕a0·b1⊕a3· b2⊕a2·b3,

c2 = a2·b0⊕a1·b1⊕a0· b2⊕a3·b3,

c3 = a3·b0⊕a2·b1⊕a1· b2⊕a0·b3,

利用定义六,有x×b(x) = b2x3+b1x2+b0x1+b3。如果再与x相乘后模x4+1,得b1x3+b0x2+b3x1+b2,由此可得:多项式每乘上一次x的运算结果,相当于多项式系数的一次左移操作。

1.2.2密码算法的设计准则

关于实用密码的两个一般的设计原则是Shannon提出混乱原则和扩散原则: 混乱原则:人们所设计的密码应使得密钥和明文以及密文之间的信赖关系相当复杂以至于这种信赖性对密码分析者来说是无法利用的。

扩散原则:人们所设计密码应使得密钥的每一位数字影响密文的多位数字以防止对密钥进行逐段破译,而且明文的每一位数字也影响密文的多位数字以便隐蔽明文数字的统计特性。

Rjindael算法的设计原则:

Joan Daemen和Vincent Rijmen在设计Rijndael算法时主要考虑了以下三点:

1.要能抵抗现在所有的已知密码攻击;

2.在各种平台上都应具有良好的性能;

3.设计要简单。

从以上三点可看出Rijndael算法在设计时遵循了安全性原则和易实现性原则。算法整体结构的精心设计确保了算法的安全性、简单性和对称性,确保了算法的易实现性。

为使密码算法能抵抗对密钥的强力攻击,必须保证密钥长度尽可能大。密钥长度要求至少128bist。另外为阻止对分组密码进行统计分析,分组长度必须足够大,使得对密文进行频率统计分析计算上不可行。

1.2.3 AES算法的整体结构

Rjindael采用的是代替/置换网络,即SP结构。每一轮有三层组成:P层为线性层,它包括ShiftRows变换(行移变换)和MixColumns变换(列混合变换),线性混合层确保多轮之上的高度扩散;S层为非线性层,由一个SubBytes变换组成,具体由非线性S-盒构成,起到混淆作用;密钥加层由AddRuondKey变换组成,将子密钥简单异或到中间状态上,实现密钥与明、密文的结合。

(1) S层设计

AES 定义了一个 S 盒,State 中每个字节按如下方式映射为一个新的字节:把该字节

的高 4 位作为行值,低4 位作为列值,然后取出 S 盒中对应行和列的元素作为输出。

S 盒是一个由 16×16 字节组成的矩阵,包含了 8 位值所能表达的256种可能的变换。S盒按以下方式构造:

①逐行按升序排列的字节值初始化 S 盒。第一行是 {00},{01},{02},…,{0F} ;第二行是 {10},{11},…, {1F} 等。在行 x 和列 y 的字节值是 {xy}。

②把 S 盒中的每个字节映射为它在有限域GF(28)中的逆。GF 代表伽罗瓦域,GF(28)由一组从0×00 到0×ff的 256个值组成,加上加法和乘法。GF(28)=Z2[X]/( x8+x4+x3+x+1)。{00} 被映射为它自身 {00}。

③把 S 盒中的每个字节记成(b7,b6,b5,b4,b3, b2,b1,b0)。对 S 盒中每个字节的每位做如下矩阵方式所描述变换:

1.2.4 P层设计

P层也称为线性层,包括 ShiftRows和MixColumns变换,其目的是提供雪崩效应,从而起到扩散作用。

MixColumns变换将状态阵列中的一个字节扩散到该字节所在列的每个字节中,ShiftRows变换则将原来处在同一列上的字节扩散到不同的列中。Rjindael算法P层的设计起到了很好的扩散作用,提高了抵抗差分密码攻击能力,这种设计同时也可有效抗击截短差分攻击和Square攻击。

1.2.5 密钥加层设计

轮函数实现的功能是把轮密钥加到状态中去。它执行了16个并行的把密钥加到状态中的运算。加法是通过异或运算来完成的:

1.3AES部分算法优化

目前提升轮变换执行效率的方法主要是利用查表和简单的移位异或操作来简化原有算法中的一些复杂运算,如矩阵运算和乘法运算。最为典型的就是在进行轮变换之前将用于字节替换变换的S-盒计算出来并存储到一个二维数组中,当在进行字节替换变换时直接从这个数组中查找到相应的字节数据来替换原来状态矩阵中的字节数据。这就将字节替换原来算法中的乘法求逆和仿射运算转变为一个简单的查表操作。虽然这要求在轮变换前要花费一定的时间和存储空间来计算和存储S-盒,但与原算法相比起来,优化后的算法实现变得相对简单,其执行的效率也大大提高。

在轮变换的过程中,行移位变换只改变字节数据在状态矩阵中的位置,并不改变字节数据的值;而字节替换变换只根据S-盒对字节数据进行一一对应的替换,与字节数据所在的位置无关。所以,这两个变换层的顺序可以调换,且对于加密算法并没有什么影响。这两层顺序调换之后,可以方便的将字节替换变换和列混合变换并作一步,通过查表的方法来代替原来算法中的矩阵乘法的操作,得到变换后的结果。在这种优化的方法中,将以列为单位进行变换。

第二章、AES算法描述:

2.1 状态、密钥、算法轮数

Rjindael算法是一个数据块长度和密钥长度都可变的迭代分组加密算法,数据块长度和密钥长度可以为128、192、256位。在加密前对数据块做预处理。首先,把数据块写成字的形式,每个字包含4个字节。其次,把字记为列的形式(如下图):

AES把128位的输入看作是一个由16个字节组成的向量,并用一个4×4的列矩阵的形式来组织,叫做“状态”(state)。

按同样的方式组织密钥,得到一个k矩阵:

我们用Nb表示一个数据块中字的个数(列的个数),那么Nb=4,6或8;用Nk表示密钥中字的个数(列的个数),那么Nb=4,6或8。

2.2 非线性混合层的S变换

字节代换(ByteSub)是作用在字节上的一种非线性变换,这个变换(或称S-box)是可逆的。它由以下两个部分组成:

a.把字节的值用它的乘法逆代替;

b.把经过a处理后的字节进行如下定义的仿射变换

乘法取逆运算为: b(x)=a(x) mod m(x) (定义四)

其中m(x) = x8+x4+x3+x+1,当a(x) = 0时,其逆元素也为0。

下面是进行逆仿射运算的仿射变换矩阵:

其中b i’是b i在GF(28)上的乘法逆。

2.3 P层的行移位和列混合描述

行移位根据不同的分组长度做相应的循环移位运算,加密算法的行移位过程如图所示:

在加密过程中,状态矩阵中的后三行要按字节进行左移位。在解密过程中,则要进行逆行移位,即将状态矩阵中的后三行按字节进行右移位。下表给出了在不同的情况下移位的次数。即在后三行的第1行要移位C1字节,第2行要移位C2字节,第3行要移位C3字节。

时,把状态矩阵的一列看作在GF(2)上的多项式,与一个常数多项式c (x)相乘并模X4+l后得到的结果。其中:

利用列混合可以使第一列的第一个字节与该列中的其他任一字节相互作用,而行移位则可以使第一轮中的其他字节互相混合,由此经过多轮运算可以达到相当强的扩散作用。

2.4 密钥加层描述

密钥加是负责把轮密钥加入到状态中去,简单地使用异或运算即可得到。轮密钥可以通过密钥调度得到。

2.5 密钥调度

密钥调度包括密钥编制和密钥选择两部分。并且遵循一下原则:

2.5.1 轮密钥的比特总数为数据块长度与轮数加1的积:Nk*4*8*(Nr+1);

2.5.2 种子密钥编制为扩展密钥,种子密钥长度为4* Nk个字节;

2.5.3 轮密钥由以下方法从扩展密钥中获得:对第1轮密钥由前Nb个字构成;第2轮密钥由第二个Nb个字即第Nb+1个字到第2Nb个字构成,以下依次类推。

AES算法利用外部输入密钥K(密钥串的字数为Nk) ,通过密钥扩展程序得到共4 (Nr + 1) 字的扩展密钥w[4 *(Nr + 1) ]。涉及如下三个模块:

(1)位置变换RotWord (),把一个四个字节的序列[a0,a1,a2,a3] 左移一个字节变为[a1,a2,a3,a0]。

(2) SubWord ( ),对一个四字节的输入字[a0,a1,a2,a3]的每一个字节进行S盒变换,然后作为输出。

(3) 变换 Rcon [ ],对轮常数的定义为: Rcon[i]=(Rc[i],’00’,’00’,’00’);

而Rc[i]表示在有限域GF(28)中x i-1的值,即:

Rc[l]=1(即’01’);

Rc[i]=x·(Rc[i-1])= x i-1 (即’02’·(Rc[i-l]))。

/*用于密钥调度的Rcon表*/

static const unsigned char rcon [10] =

{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1B,0X36}

(4)扩展密钥的生成:

扩展密钥的前Nk个字就是外部密钥 K;以后的字w[[ i ]]等于它前一个字w[[i-1]]与前第Nk个字w[[i-Nk]]的异或 ,即w[[ i ]]= w[[i-1]] XOR w[[i-Nk]]。但是若i 为Nk 的倍数 , 则w[i] = w[i-Nk] XOR SubWord(RotWord (w[[i-1]]))XOR Rcon [i/Nk]。

2.6 加密算法

AES加密算法由初始轮密钥加层和Nr轮的轮变换组成它的输入为初始状态阵列和轮密钥,执行加密算法后产生一个输出状态阵列,输入明文和输出密文均为128比特

2.7 解密算法

解密算法的结构与加密算法的结构相同,其中的变换为加密算法变换的逆变换,且使用了一个稍有改变的密钥编制。

第三章、AES算法的实现:

3.1 AES算法的流程图

AES 加解密算法流程图

void aes::jiemi(unsigned char ming[4][4],unsigned char me[4][4]) {

input(me); int i=Nr;

AddRoundKey(i);

for(i=Nr-1;i>=1;i--) {

InvShiftRows();

InvSubBytes(); AddRoundKey(i); InvMixColumns(); }

InvShiftRows();

InvSubBytes(); AddRoundKey(i);

output(ming);

}

3.2 程序中各变换表的说明

3.2.1 S-盒和逆S-盒变换表

将用于字节替换变换的S-盒计算出来并存储到一个二维数组中,当在进行字节替换变换时直接从这个数组中查找到相应的字节数据来替换原来状态矩阵中的字节数据。同理可将逆S-盒也计算出来存储在数组里。

用于加密的S-盒的定义如下:

用于解密的逆S-盒的定义如下:

3.3 密钥扩展模块的实现

void aes::KeyExpansion(unsigned char key[][Nk_max])

{

unsigned char t[4];

int i=0,j=0;

for( i=0;i<4;i++)

for( j=0;j

Key[i][j]=key[i][j];

i=0;j=0;

while(i

{

KeyExp[0][i]=Key[0][i];

KeyExp[1][i]=Key[1][i];

KeyExp[2][i]=Key[2][i];

KeyExp[3][i]=Key[3][i];

i++;

}

while(i

{

int row=0;

t[0]=KeyExp[0][i-1];

t[1]=KeyExp[1][i-1];

t[2]=KeyExp[2][i-1];

t[3]=KeyExp[3][i-1];

if(i%Nk==0)

{

RotWord(t);

for(row=0;row<4;row++)

{

t[row]=Sbox[HIGH4(t[row])][LOW4(t[row])];

t[row]=t[row]^Rcon[i/Nk][row];

}

}

else if(Nk>6 && i%Nk==4)

for(row=0;row<4;row++)

t[row]=Sbox[HIGH4(t[row])][LOW4(t[row])];

for(row=0;row<4;row++)

KeyExp[row][i]=KeyExp[row][i-Nk]^t[row];

i++;

}

}

5.3 加密模块的实现

void aes::jiami(unsigned char ming[4][4],unsigned char me[4][4]) {

input(ming);

int i=0;

AddRoundKey(i);

for(i=1;i<=Nr-1;i++)

{

SubBytes();

ShiftRows();

MixColumns();

AddRoundKey(i);

}

SubBytes();

ShiftRows();

AddRoundKey(i);

output(me);

}

5.4解密模块的实现

oid AES::DecryptionProcess()

{ // 解密过程

InitialState(cipherText);

KeyExpansion();

InvFinalRound();

for(int i = N_ROUND-2; i >0 ; --i)

{

InvRound(i);

}

AddRoundKey(0);

InitialplainText();

}

六、算法测试及分析:

6.1 正确性测试

本程序采用动态加密,要求输入加密明文(16位)和加密密钥(16位)后即可得到加密后的密文。程序启动界面如图:

6.1.1字符串加解密测试

输入1后,输入16位的待加密明文,然后再输入不超过16位的加密密钥,按下回车,即可得到加密结果如下:

解密后的结果如图所示:

关于对话框:

帮助对话框:

七.总结

通过本次课程设计,对AES加密解密算法有了更深的主任认识,同时也提高了自己的动手能力,对MFC编程有了一定的了解,在做课程设计的过程中也遇到了一些问题,在老师的帮助下得到了解决,很欣慰。不足之处由于初次写MFC所以界面等设计的不是很好,以后会加强这方面的学习。

源代码如下:

// AES.h: interface for the AES class.

//

//////////////////////////////////////////////////////////////////////

#if !defined(AFX_AES_H__E7A55E4B_8EAF_4FAE_B547_3829CB5B5130__INCLUDED_)

#define AFX_AES_H__E7A55E4B_8EAF_4FAE_B547_3829CB5B5130__INCLUDED_

#define N_ROUND 11

#define KEY_SIZE 16

#if _MSC_VER > 1000

#pragma once

#endif// _MSC_VER > 1000

#include

#include

#include

using namespace std;

class AES

{

public:

typedef unsigned char byte;

//static const int KEY_SIZE;//; = 16; // 密钥长度为位// static const int N_ROUND ;//= 11;

byte plainText[16]; // 明文

byte state[16]; // 当前分组。

byte cipherKey[16]; // 密钥

byte roundKey[N_ROUND][16]; //轮密钥

byte cipherText[16]; //密文

byte SBox[16][16]; // S盒

byte InvSBox[16][16]; // 逆S盒

void EncryptionProcess()

{ // 加密过程

InitialState(plainText);

KeyExpansion(); // 密钥扩展

AddRoundKey(0); // 轮密钥加

for(int i = 1; i < N_ROUND-1; ++i)

{

Round(i);

}

FinalRound();

InitialCipherText();

}

void DecryptionProcess()

{ // 解密过程

InitialState(cipherText);

KeyExpansion();

InvFinalRound();

for(int i = N_ROUND-2; i >0 ; --i) {

InvRound(i);

}

AddRoundKey(0);

InitialplainText();

}

void Round(const int& round)

{ // 正常轮

SubBytes();

ShiftRows();

MixColumns();

AddRoundKey(round);

}

void InvRound(const int& round) { // 正常轮的逆

AddRoundKey(round);

InvMixColumns();

InvShiftRows();

InvSubBytes();

}

void FinalRound()

{ // 最后轮

SubBytes();

ShiftRows();

AddRoundKey(N_ROUND - 1);

}

void InvFinalRound()

{ // 最后轮的逆

AddRoundKey(N_ROUND - 1); InvShiftRows();

InvSubBytes();

}

void KeyExpansion()

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

密码学基础课程设计指导书

《现代密码学基础》课程设计指导书 杨柳编 湖南科技大学计算机科学与工程学院 2014年12月

一、概述 本课程在简要复习数学基础知识之后,探讨了密码学研究的基本问题:通过不安全的通信媒介如何进行安全通信。也可以理解为关心任何希望限制不诚实者达到目的的问题,把度量和评价一个密码体制(协议)的安全性作为一个重点。就目前来说,密码学的研究领域已从消息加密扩大到了数字签名、消息认证、身份识别、抗欺骗协议等。无疑,在整个教学过程中非常重视密码学的基础,当然包括数学基础。并针对实际的密码体制(协议)强调设计与分析(攻击),对现代密码学的主要研究问题都进行了介绍。 对于密码学这样的课程,同学们一定要从理论、技术、应用三个方面进行学习与思考。密码体制(协议)无疑是我们的学习重点,密码体制(协议)也可以单纯地理解为计算机算法,从而有设计、分析、证明、实现的问题。实现密码体制(协议)就是我们经常讲的八个字:模型、算法、程序、测试。 二、课程设计步骤 课程设计步骤要求如下: 1.模型 从数学的角度看,解决任何问题都要建立一个数学模型,对于密码学来说更是如此。我们还可以认为,数据结构中的存储结构也是模型。于是这一部分的任务就是建立起问题的逻辑结构和存储结构,为算法设计和编码实现打下基础。 2.算法 这一部分对同学们的要求是能看懂书上的常用算法,并对其中的参数可以进行调整和设置,能实现和应用它们。 3.程序 编码实现得到程序。 4. 测试 5. 提交课程设计报告

三、课程设计报告编写要求 课程设计报告开头标明课程设计题目、设计者的班级、姓名、学号和完成日期,内容包括:模型、算法、程序、测试四个部分。 四、设计要求 可以只做第7题,不做第7题的要做第1题-第6题。 五、课程设计题目 大整数运算包的设计与实现 1.问题描述 大整数运算是现代密码学算法实现的基础,重要性不言而喻。大整数我们指的是二进制位512、1024和2048的数,一般的语言不支持。 2.基本要求 以类库头文件的形式实现。 3.实现提示 在选择了大整数的存储结构之后,主要实现以下运算: ①模加; ②模减; ③模乘; ④模整除; ⑤模取余。这五种运算模拟手算实现。 ⑥幂模:利用“平方-乘法”算法实现。 ⑦GCD:利用欧几里得算法实现。 ⑧乘法逆: 利用扩展的欧几里得算法实现。 ⑨素数判定与生成:概率性素数产生方法产生的数仅仅是伪素数,其缺点在于,

加密解密课程设计

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

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

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

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

AES密码学课程设计(C语言实现)

成都信息工程学院课程设计报告 AES加密解密软件的实现 课程名称:应用密码算法程序设计 学生姓名:樊培 学生学号:2010121058 专业班级:信息对抗技术101 任课教师:陈俊 2012 年6月7日

课程设计成绩评价表

目录 1、选题背景 (4) 2、设计的目标 (4) 2.1基本目标: (4) 2.2较高目标: (5) 3、功能需求分析 (5) 4、模块划分 (6) 4.1、密钥调度 (6) 4.2、加密 (8) 4.2.1、字节代替(SubBytes) (8) 4.2.2、行移位(ShiftRows) (10) 4.2.3、列混合(MixColumn) (11) 4.2.4、轮密钥加(AddRoundKey) (13) 4.2.5、加密主函数 (14) 4.3、解密 (16) 4.3.1、逆字节替代(InvSubBytes) (16) 4.3.2、逆行移位(InvShiftRows) (17) 4.3.3、逆列混合(InvMixCloumns) (17) 4.3.4、轮密钥加(AddRoundKey) (18) 4.3.5、解密主函数 (18) 5.测试报告 (20) 5.1主界面 (20) 5.2测试键盘输入明文和密钥加密 (20) 5.3测试键盘输入密文和密钥加密 (21) 5.3测试文件输入明文和密钥加密 (22) 5.4测试文件输入密文和密钥加密 (22) 5.5软件说明 (23) 6.课程设计报告总结 (23) 7.参考文献 (24)

1、选题背景 高级加密标准(Advanced Encryption Standard,AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael 之命名之,投稿高级加密标准的甄选流程。(Rijndael的发音近于 "Rhine doll") 严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支援更大范围的区块和密钥长度:AES的区块长度固定为128 位元,密钥长度则可以是128,192或256位元;而Rijndael使用的密钥和区块长度可以是32位元的整数倍,以128位元为下限,256位元为上限。加密过程中使用的密钥是由Rijndael 密钥生成方案产生。大多数AES计算是在一个特别的有限域完成的。 截至2006年,针对AES唯一的成功攻击是旁道攻击 旁道攻击不攻击密码本身,而是攻击那些实作于不安全系统(会在不经意间泄漏资讯)上的加密系统。2005年4月,D.J. Bernstein公布了一种缓存时序攻击法,他以此破解了一个装载OpenSSL AES加密系统的客户服务器[6]。为了设计使该服务器公布所有的时序资讯,攻击算法使用了2亿多条筛选过的明码。有人认为[谁?],对于需要多个跳跃的国际互联网而言,这样的攻击方法并不实用[7]。 Bruce Schneier称此攻击为“好的时序攻击法”[8]。2005年10月,Eran Tromer和另外两个研究员发表了一篇论文,展示了数种针对AES的缓存时序攻击法。其中一种攻击法只需要800个写入动作,费时65毫秒,就能得到一把完整的AES密钥。但攻击者必须在执行加密的系统上拥有执行程式的权限,方能以此法破解该密码系统。 虽然高级加密标准也有不足的一面,但是,它仍是一个相对新的协议。因此,安全研究人员还没有那么多的时间对这种加密方法进行破解试验。我们可能会随时发现一种全新的攻击手段会攻破这种高级加密标准。至少在理论上存在这种可能性。 2、设计的目标 2.1基本目标: (1)在深入理解AES加密/解密算法理论的基础上,能够设计一个AES加密/解密软件系统,采用控制台模式,使用VS2010进行开发,所用语言为C语言进行编程,实现加密解密; (2)能够完成只有一个明文分组的加解密,明文和密钥是ASCII码,长度都为16个字符(也就是固定明文和密钥为128比特),输入明文和密钥,输出密文,进行加密后,能够进

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

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

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

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

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

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

第九章、实验报告 实验一、设置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.设计完成后提交课程设计报告。 设计意义 至今,密码技术是取得信息安全性最有效的一种方法, 密码技术是信息安全的核心技术。通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。进一步,密码技术可以应用于数字签名、身份认证和信息鉴定,这些应用对于资源存取控制以及其它安全措施是必须而且有效的。相对于防病毒软件和防火墙软件来说,基于密码技术密码类产品、认证类产品份额相对较小,但随着金融、电信、政府等行业信息化建设对于网络安全整体解决方案需求的增加,将会有较大的增长。

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比特的标准算法和逻辑运算,运算速

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.

DES加密解密课程设计报告

D E S加密解密课程设计 报告 标准化工作室编码[XX968T-XX89628-XJ668-XT689N]

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

1背景 1.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比特的标准算法和逻辑运算,运算速度快,密钥容易产生,适合于在大多数计算机上用软件快速实现,同样也适合于在专用芯片上实现。 1.2 DES算法描述 DES算法的加密过程首先对明文分组进行操作,需要加密的明文分组固定为64比特的块。图1-1是DES加密算法的加密流程。图1-2是密钥扩展处理过程。 图1-1DES加密算法流程 图1-2子密钥产生流程 2系统设计 2.1系统主要目标 (1)用C++设计一个DES加密/解密软件系统; (2)完成一个明文分组的加解密,明文和密钥是ASCII码,长度都为8个字符,输入明文和密钥,输出密文,进行加密后,能够进行正确的解密; (3)程序运行时,要求输出第15、16轮的密钥,以及第15、16轮加密或解密之后的值,16进制表示; (4)程序有良好的人机交互操作; (5)要求从两个文件分别读取明文和密钥,并在程序中输出明文及密钥; (6)要求提供所设计系统的报告及完整的软件。 2.2系统运行环境

文件加密与解密—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、解密功能实现;

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

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

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

摘要 随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,常见的有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文件加密解密课程设计

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

相关主题