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); */
}
void man(char *sd,char *ds) /*解密过程*/
{
/*int n=0; */
FILE *fp2,*fp3;
register int fh;
char buf1[1000];
fp2=fopen("e:\sd.txt","rb"); /*用可读方式打开文件*/
fp3=fopen("e:\ds.txt","wb"); /*用可写方式创建一文件*/
if(fp2==NULL)
{
printf("cannot open file\n");
exit(1);
}
if(fp3==NULL)
{
printf("cannot build file\n");
exit(1);
}
fh=fgetc(fp2); /*从光标处读出一个字符*/
while(!feof(fp2)) /*当读出的字符到达最后一个则停止*/
{
fh=fh>>1; /*解密方式*/
fputc(fh,fp3); /*解密的字符存放在指定的地方*/
fh=fgetc(fp2);
}
fread(buf1,sizeof(buf1),1,fp3); /*读出buf1中所存放的数据*/ printf("%s",buf1);
}
void main()
{ int k;
char *f[]={"jiami","jiemi"}; /**界面的形式/
int key,y;
int j,q;
char list[300];
char sd[300];
char ds[300];
char ch,fh;
char buf[1000];
char buf1[1000];
FILE *fp1;
FILE *fp2;
int l1,l2;
window(1,1,80,25);/*left,top,right,bottom,相对于屏幕的字符坐标,屏幕原点在左上角*/
gettext( 20,10,40,14,buf); /*保存矩形屏幕上的字符*/
textbackground(7); /*背景颜色*/
textcolor(0); /*字体颜色*/
clrscr(); /*清除矩形屏幕上的所有字符*/
gotoxy(24,10);/*将当前字符屏幕的光标位置移动到x,y的坐标位子*/ printf("%s",f[0]);
gotoxy(24,14);
printf("%s",f[1]);
gettext(10,8,60,16,buf);
box(22,9,3,30); /*建立一个小窗口*/
key=0;
while(1)
{ while(bioskey(1)==0); /*读取键盘值查询键盘是否按下*/ key=get_key(); /*按下了什么键盘*/
if(key==key_up||key==key_down)
{
y=wherey();/*得到字符模式下窗口光标的x坐标数值*/ if(key==key_up)
y=y==10? y+4:10; /*当y=10光标向下移动四个位置否则将光标移动到y=10处*/
if(key==key_down)
y=y==14? y-4:14; /*当y=14光标向下移动四个位置否则将光标移动到y=14处*/
puttext(10,8,60,16,buf); /*将gettext函数保存的字符恢复到屏幕上 */
gotoxy(24,y);
if(y==10)
{ textbackground(7);
textcolor(0);
box(22,9,3,30);
textbackground(3);
textcolor(15);
gotoxy(24,y);
cprintf("%s",f[0]);
}
else
{ textbackground(7);
textcolor(0);
box(22,13,3,30);
textbackground(3);
textcolor(15);
gotoxy(24,y);
cprintf("%s",f[1]); }
}
if(key==key_enter&&y==10)且光标在y=10处 /*当按下enter键且
光标在y=10处进行下步*/
{
clrscr();
textbackground(3);
textcolor(15);
/*clrscr(); */
gotoxy(24,5);
printf("input the file name for jiami\n");/*用户给需要加
密的文件加密 */
l1=strlen("input the file name for jiami:");/*待求长度的
字符串指针*/
gotoxy(24+l1,5);
scanf("%s",list);
gotoxy(24,10);
printf("input file name for save\n");/*给加密后的文件命名,
并保存*/
l2=strlen("input file name for save:");
gotoxy(24+l2,10);
scanf("%s",sd);
fun(list,sd);
fp1=fopen("e:\sd.txt","rb");
fread(buf1,sizeof(buf1),1,fp1);
gotoxy(10,15);
printf("%s\n",buf1);
getch();
printf("file haven jiami ,save now");
getche(); break;
}
if(key==key_enter&&y==14)
{
clrscr();
textbackground(3);
textcolor(15);
gotoxy(24,5);
printf("input the file name for jiemi \n");/*用户给需要解密的文件解密 */
l1=strlen("input the file name for jiemi: ");
gotoxy(24+l1,5);
scanf("%s",sd);
gotoxy(24,10);
printf("input file name for save:\n");/*对解密的文件系统又可以提供保存路径 */
l2=strlen("input file name for save: ");
gotoxy(24+l2,10);
scanf("%s",ds);
man(sd,ds);
fp2=fopen("e:\ds.txt","rb");
fread(buf1,sizeof(buf1),1,fp2);
gotoxy(10,15);
printf("%s\n",buf1);
getch();
printf("file haven jiemi,save now");
getche();
break;
}
}
window(1,1,80,25);
gettext( 20,10,40,14,buf);
textbackground(7);
textcolor(0);
clrscr();
gotoxy(24,10);
printf("%s",f[0]);
gotoxy(24,14);
printf("%s",f[1]);
gettext(10,8,60,16,buf);
box(22,9,3,30);
key=0;
while(1)
{ while(bioskey(1)==0);
key=get_key();
if(key==key_up||key==key_down)
{
y=wherey();
if(key==key_up)
y=y==10? y+4:10;
if(key==key_down)
y=y==14? y-4:14;
puttext(10,8,60,16,buf);
gotoxy(24,y);
if(y==10) /*光标在10处的窗口*/
{ textbackground(7);
textcolor(0);
box(22,9,3,30);
textbackground(3);
textcolor(15);
gotoxy(24,y);
cprintf("%s",f[0]);
}
else
{ textbackground(7);
textcolor(0);
box(22,13,3,30);
textbackground(3);
textcolor(15);
gotoxy(24,y);
cprintf("%s",f[1]); }
}
if(key==key_enter&&y==10)
{
clrscr();
textbackground(3);
textcolor(15);
/*clrscr(); */
gotoxy(24,5);
printf("input the file name for jiami\n");/*用户给需要加密的文件加密 */
l1=strlen("input the file name for jiami:");
gotoxy(24+l1,5);
scanf("%s",list);
gotoxy(24,10);
printf("input file name for save\n");/*给加密后的文件命名,并保存*/
l2=strlen("input file name for save:");
gotoxy(24+l2,10);
scanf("%s",sd);
fun(list,sd);
fp1=fopen("e:\sd.txt","rb");
fread(buf1,sizeof(buf1),1,fp1);
gotoxy(10,15);
printf("%s\n",buf1);
getch();
printf("file haven jiami ,save now");
getche();
}
if(key==key_enter&&y==14)
{
clrscr();
textbackground(3);
textcolor(15);
gotoxy(24,5);
printf("input the file name for jiemi \n");/*用户给需要解密的文件解密 */
l1=strlen("input the file name for jiemi: ");
gotoxy(24+l1,5);
scanf("%s",sd);
gotoxy(24,10);
printf("input file name for save:\n");/*对解密的文件系统又可以提供保存路径 */
l2=strlen("input file name for save: ");
gotoxy(24+l2,10);
scanf("%s",ds);
man(sd,ds);
fp2=fopen("e:\ds.txt","rb");
fread(buf1,sizeof(buf1),1,fp2);
gotoxy(10,15);
printf("%s\n",buf1);
getch();
printf("file haven jiemi,save now");
getche();
break;
}
}
}
int get_key()
{
union REGS rg;
rg.h.ah=0;
int86(0x16,&rg,&rg);
return rg.h.ah;
getchar();
}
void box(int startx,int starty,int high,int width) /*屏幕的建立*/
{
int i;
gotoxy(startx,starty);
putch(0xda);
for (i=startx+1;i putch(0xc4); putch(0xbf); for(i=starty+1;i { gotoxy(startx,i); putch(0xb3); gotoxy(width,i); putch(0xb3); } gotoxy(startx,starty+high-1); putch(0xc0); gotoxy(startx+1,starty+high-1); for(i=startx+1;i putch(0xc4); putch(0xd9); return; } 四:心得体会 通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习C语言,而且对于我学习任何一门课程都是很有益处的。总之,做这份作业对于我们学习C语言有很大的帮助。 在做课程设计时,由于运用了很多新知识,新的方法,还有题目更加复杂,应用性更强,在编写过程中遇到了很多困难,从而使自己能够学习到更多以前不懂,难懂的东西。 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类结构图 RSA算法 1978年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。 RSA的安全性依赖于大数难于分解这一特点。公钥和私钥都是两个大素数(大于100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。 密钥对的产生。选择两个大素数,p 和q 。计算:n = p * q 然后随机选择加密密钥e,要求e 和( p - 1 ) * ( q - 1 )互质。最后,利用Euclid 算法计算解密密钥d, 满足e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q 不再需要,应该丢弃,不要让任何人知道。加密信息m(二进制表示)时,首先把m分成等长数据块m1 ,m2,..., mi ,块长s,其中2^s <= n, s 尽可能的大。对应的密文是:ci = mi^e ( mod n ) ( a ) 解密时作如下计算:mi = ci^d ( mod n ) ( b ) RSA 可用于数字签名,方案是用( a ) 式签名,( b )式验证。具体操作时考虑到安全性和m信息量较大等因素,一般是先作HASH 运算。RSA 的安全性。RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA 就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。 */ #include 兰州商学院陇桥学院工学系课程设计报告 课程名称: Java 设计题目:加密与解密 系别:工学系 专业 (方向):信息管理与信息系统 年级、班:2012级(2)班 学生姓名:费亚芬 学生学号: 208 指导教师:张鑫 2014年7 月 1日 目录 一、系统开发的背景................................. 错误!未定义书签。 二、系统分析与设计................................. 错误!未定义书签。(一)............................................. 系统功能要求错误!未定义书签。(二)......................................... 系统模块结构设计错误!未定义书签。 三、系统的设计与实现............................... 错误!未定义书签。(一)图形用户界面模块 ........................... 错误!未定义书签。(二)加密操作模块 ............................... 错误!未定义书签。 (三)解密操作模块................................ 错误!未定义书签。(四)文件保存模块 ............................... 错误!未定义书签。 (五)文件选择模块 ............................... 错误!未定义书签。 四、系统测试....................................... 错误!未定义书签。(一)测试加密..................................... 错误!未定义书签。(二)测试选择加密文件............................. 错误!未定义书签。(三)测试生成加密文件............................. 错误!未定义书签。(四)测试浏览加密文件............................. 错误!未定义书签。(五)测试解密文件................................. 错误!未定义书签。 五、总结........................................... 错误!未定义书签。 六、附件(代码、部分图表) ......................... 错误!未定义书签。 RC4 加密算法 C 语言实现 代码文件名 RC4.cpp Encrypt.h (代码详见后文) 备注:将以上两个文件放在相同的路径(建议不要放在中文路径 下)编译执行!编译环境 Microsoft Visual C++ 6.0 C-Free 5.0 代码解释 RC4 加密算法是大名鼎鼎的RSA 三人组中的头号人物Ron Rivest 在1987 年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box 长度可为任意,但一般为256字节。该算法的速度可以达到DES 加密的10倍左右。 RC4 算法的原理很简单,包括初始化算法和伪随机子密码生成算法两大部分。假设S-box 长度和密钥长度均为为n。先来看看算法的初始化部分(用类C伪代码表示): for (i=0; i } 得到的子密码sub_k用以和明文进行xor运算,得到密文,解密过程也完全相同。 RC4加密算法在C++中的实现: RC4函数(加密/解密):其实RC4只有加密,将密文再加密一次,就是解密了。 GetKey函数:随机字符串产生器。 ByteToHex函数:把字节码转为十六进制码,一个字节两个十六进制。十六进制字符串非常适合在HTTP中传输。 HexToByte函数:把十六进制字符串,转为字节码。。 Encrypt函数:把字符串经RC4加密后,再把密文转为十六进制字符串返回,可直接用于传输。 Decrypt函数:直接密码十六进制字符串密文,再解密,返回字符串明文。 源代码 以下为Encrypt.h文件代码 #ifndef _ENCRYPT_RC4_ #defi ne _ENCRYPT_RC4_ #in clude 个人资料整理仅限学习使用 成都信息工程学院课程设计报告 AES加密解密的实现 课程名称:应用密码算法程序设计 学生姓名: 学生学号: 专业班级: 任课教师: 年月日 个人资料整理仅限学习使用 附件:课程设计成绩评价表 个人资料整理仅限学习使用目录 1.背景 AES,密码学中的高级加密标准 软件学院 课程设计报告书 课程名称面向对象程序设计 设计题目文本文档的加密与解密 专业班级财升本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); } }); 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语言程序设计 指导教师: 学生: 学号: 学院:电子信息工程学院 完成时间: 2011年9月27日 嘉应学院电子信息工程学院 1 C语言课程设计说明书 目录 1 需求分析 (1) 2总体设计 (2) 3详细设计 (3) 3.1 换位加密流程图 (3) 3.2 换位解密流程图 (4) 3.3 替代加密流程图 (5) 3.4 替代解密流程图 (6) 4调试与测试 (8) 5测试结果 (8) 6附录 (11) I 1 需求分析 问题描述(实验指导书中已经给出) ①数据的输入和输出;要求使用文件操作。文件(明文,仅限于英文字母)存放在某一已知文本文件中,加密后的文件(密文)存放在另一文件中。 ②换位加密和解密: 加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文; ③凯撒加密和解密: 加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文; ④统计单词的个数; ⑤退出。 2总体设计 (程序设计总流程图,可以画带流程线的流程图) 此处只需要写出一个流程图就可以了,就是总的那个流程图,请规范的画图。不需要分出2.1和2.2. 开始 welcome() caidan() transpen( ); transpde( ) caesaren( ) caesarde() mingwent miwentongji(byebye() 3详细设计 (各模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等 这块大家问题最多了,这里不是写程序代码,而是写流程图里面各个主要函数的作用,函数之间关系的说明。 以第1题为例,此处应为: 3.1 换位加密流程图 流程图 (对流程图加以说明。可以把关键语句放在此处,加以注释说明) 建立mingwen.txt 和miwen.txt 文件 输入密钥n 输入明文到数组r k=strlen(r)j 计算数组r 长度 for i=0 to k 关闭并保存mingwen.txt 文件 打开mingwen.txt 文件 space(h,r) 将明文去空格并放到数组h 中 m=strlen(h) 计算数组h 长度 m%n==0 是 否 hang=m/n hang=m/n+1 j=0 for i=0 to hang for i=m to hang*n z=0 fputc(r[i],mingwen) 将明文存放到mingwen.txt 文件中 for j=0 to n h[i]='a'+j j++ for i=0 to hang zl[i][j]=h[z] z++ for j=o to n zl[i][j]=h[z] z++ 仲恺农业工程学院课程设计 文件加密 姓名孙浩斌 院(系)信息科学与技术学院 专业年级计算机132 学号 指导教师罗慧慧 职称学生 起止时间2015-6-15至2015-6-24 仲恺农业工程学院教务处制 目录 一.课程设计目的和要求 设计目的 有时我们有些资料不希望别人看到,最常用的方法就是加密。对给定的相关文件进行加密可以对文件进行保护,可以防止某些重要信息不被别人所知道甚至窃取。对文件起到保护作用,可以方便用户使用某些只有自己能知道的信息,能够安全保护文件的相关内容几信息不被外流。随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,信息安全问题已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否保护自己的个人隐私的关键。信息安全是社会稳定安全的必要前提条件。通过课程设计,使学生了解高级程序设计语言的结构,逐渐培养学生的编程能力、用计算机解决实际问题的能力,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试程序及编写设计报告。 本课程设计的目标: 1. 巩固《高级语言程序设计》课程学习的内容和加深学生对基本知识的理解和掌握。 2. 掌握编程和程序调试的基本技能。 3. 掌握软件设计的方法。 4. 提高运用程序设计解决实际问题的能力。 5. 培养独立思考、综合运用所学有关相应知识的能力。 6. 强化上机动手编程能力,闯过理论与实践相结合的难关! 设计要求 1. 分析课程设计题目的要求,根据所要求的程序功能,画出程序的流程图。 2.对系统功能模块进行分析,写出详细设计说明文档。 3.对程序源代码进行调试与测试,使其能正确运行。 4.设计完成的软件要便于操作和使用。 5.设计完成后提交课程设计报告。 设计意义 至今,密码技术是取得信息安全性最有效的一种方法, 密码技术是信息安全的核心技术。通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。进一步,密码技术可以应用于数字签名、身份认证和信息鉴定,这些应用对于资源存取控制以及其它安全措施是必须而且有效的。相对于防病毒软件和防火墙软件来说,基于密码技术密码类产品、认证类产品份额相对较小,但随着金融、电信、政府等行业信息化建设对于网络安全整体解决方案需求的增加,将会有较大的增长。 C语言实现文件的des加解密实例 c语言中的正则 ,d3.js画矢量图+可拖拽的实现思路 DOM2级事件处理程序跨浏览器兼容事件 ,exel导入/导出和csv文件导入、导出 ,Go http访问使用代理 golang进行socket通讯 ,hessian+hibernate 懒加载处理 ,HTML+CSS代码橙色导航菜单html5 撞球游戏 // get 网络请求 func Get(api string,params .Values)(rs[]byte ,err error){ var *. ,err=.Parse(api) if err!=nil{ fmt.Printf("解析错误:\r\n%v",err) return nil,err } //如果参数中有中文参数,这个方法会进行Encode //iOS KVO注册和监听方法 //C语言websocket编程 .RawQuery=params.Encode() resp,err:=http.Get(.String()) if err!=nil{ fmt.Println("err:",err) return nil,err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body) } // post 网络请求 ,params 是.Values类型 func Post(api string, params .Values)(rs[]byte,err error){ resp,err:=http.PostForm(api, params) if err!=nil{ return nil ,err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body) } //代码描述:基于GO的黄金数据接口调用代码实例 //关联数据:黄金数据 //css之before and after [代码] [C#]代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using https://www.doczj.com/doc/4c1623426.html,; 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课程设计报告
RSA加密算法_源代码__C语言实现
加密解密课程设计
RC4加密算法C语言实现
密码学课程方案AES加密解密文档
java文件加密解密课程设计
DES加密解密课程设计报告
(完整word版)电子系c语言程序设计加密解密
文件加密系统课程设计
C语言实现文件的des加解密实例
DES加密解密课程设计报告
RSA加解密算法C语言的实现