数据的加密与解密

数据的加密与解密
数据的加密与解密

《C语言课程设计》课程设计报告

题目数据的加密与解密

学号110803022

姓名桂阳阳

年级专业2011级通信工程

指导教师蔡继盛

完成日期2012 年 6 月 5 日

安徽师范大学物理与电子信息学院

College of Physics and Electronic Information, Anhui Normal University

目录

课程设计任务书 (3)

摘要 (4)

关键词 (4)

原理 (4)

一.系统功能分析 (5)

1.1设计目的 (5)

1.2功能描述 (5)

二.C 语言程序编写 (6)

2.1程序结构图 (6)

2.2程序流程图 (6)

2.3程序源代码 (8)

三.程序功能示例 (13)

3.1示例截图 (13)

3.2测试过程 (16)

四.设计体会与收获 (16)

五.参考文献 (16)

《C 语言程序》课程设计任务书

摘要:

作为保障数据数据安全的一种方式,对于信息的加密技巧起源于欧洲,最广为人知的编码机器是德国的German Enigma,在第二次世界大战中德国人利用它创建了加密信息系统,从而解决军事信息的保密通讯问题。

尽管加密技术被首先使用在军事通信领域,但是人们或许出于安全的考虑,开始逐渐对于商业机密、政府文件等重要信息实施加密手段。数据加密应运而生。其基本原理是:

对明文(可读懂的信息)进行翻译,使用不同的算法对明文以代码形式(密码)实施加密。该过程的逆过程称为解密,即将该编码信息转化为明文的过程。

从事数据加密研究的人称为密码编码者(Cryptographer),而从事对数据解密的专业人士称为密码分析者(Cryptanalyst)。如今数据加密技术被广泛地应用与国民经济各个领域,特别是政府机关和国防情报部门,此外才是科学研究机关、商业部门、新闻出版、金融证券、交通管制与电力输送等部门。

而C语言程序设计教学不仅仅局限于使学生单纯地了解和掌握C语言的基本语法规范,而是要致力于培养学生运用C语言解决实际问题的编程能力。C 语言程序设计教学方法的改革让学生从多角度、以多方式去了解和掌握C语言以及程序设计的精髓,着重培养学生无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法的能力。

关键词:C语言,程序设计,换位法,换位位数,数据加密与解密

原理:

换位法加密的原理是将英文句子中的空格

去除,然后将句子排成若干行,每行的字符

数为换位位数,再按列输出即为密文,不足

部分填入随机字母。;例如英文can you come here 若换位位数取4,则密文为comraueench*yoe*,

*代表随机字母,如右图所示:

一、系统功能分析

1.1 设计目的

本课程设计的目的是为了保证个人数据资料不被他人非法窃取使用,保护个人的隐私及重要文件。

1.2 功能描述

本程序主要是对已知文件(为英文字符)通过一定的算法将其转换成非本身的其他英文字母以达到文件加密的目的。整个系统由以下几大功能模块组成。

1.主控选择模块

此模块是主程序操作界面,供用户进行选择。用户可选择执行加密或解密操作。

2.加密模块

此模块执行加密操作,输入明文后,去除空格得s1,再判断有没有缺空格,有就补随机字母,然后按照换位位数进行加密,从而得到密文。

3.解密模块

解密模块是完成对文件的解密工作,将密文转换为可被识别的明文。从外部文件中读入任意一个文件并将它解密并显示出来。

本次综合训练是计算机科学与技术、信息管理与信息系统、软件工程专业重要的实践性环节之一,是在学生学习完《C语言程序设计》、《数据结构》课程后进行的一次全面的综合练习。本课综合训练的目的和任务是:

1.巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握;

2.掌握C语言编程和程序调试的基本技能;

3.利用C语言进行基本的软件设计;

4.掌握书写程序设计说明文档的能力;

5.提高运用C语言、数据结构解决实际问题的能力。

二、C 语言源程序编写:

2.1 程序结构图:

主函数

2.2 程序流程图

2.3程序源代码:

#include

#include

#define CHANGDU 1000

int main( )

{

char *jiami(char *p,char *s1,int key); char *jiemi(char *p,char *s2,int key); int key,i,j,len;

char s1[CHANGDU];

char s2[CHANGDU];

char xstr[CHANGDU];

printf("

*****************************\n");

printf(" * welcome to use the system! *\n");

printf("

*****************************\n");

printf("qing shu ru yuan shi ming wen:");

gets(s2);

{

int m=0,i=0,t;

char ch;

t=strlen(s2);

for(i=0;i

if(s2[i]!=' '&&s2[i]!='\0')

{

ch=s2[i];

s1[m]=ch;

m=m+1;

}

ch=s2[i];

s1[m]=ch;

if(s1[0]>='A'&&s1[0]<='Z')

s1[0]=s1[0]+32;

}

puts(s1);

printf("qing shu ru jia mi mi yao:"); scanf("%d",&key);

jiami(xstr,s1,key);

printf("jia mi mi wen shi:");

printf("%s\n",xstr);

if(jiemi(s1,xstr,key)!=NULL)

{;}

else

{

printf("NULL");

}

{

int a;

char str[CHANGDU];

printf("**********************************************\ n");

printf("qing shu ru jie mi mi yao:");

scanf("%d",&a);

getchar();

printf("qing shu ru jia mi mi wen:");

gets(str);

if(a==key&&str[0]==s1[0])

{

printf("jie mi ming wen shi:");

puts(s2);

}

}

}

char *jiami(char *p,char *s1,int key)

{

int i,j,len,len1,n=0;

len=strlen(s1);

if((len % key)!=0)

len1=len+key-(len % key);

else

len1=len;

for(i=len;i

s1[i]=(char)((rand() % 26)+(rand() % 1)*('A'-'a')+'a'); s1[len1]=0;

for(j=0;j

for(i=0;i<(len1/key);i++)

p[n++]=s1[i*key+j];

p[n]=0;

return p;

}

char *jiemi(char *p,char *s2,int key)

{

int i,j,len,n=0;

len=strlen(s2);

if((len % key)!=0) return NULL;

len=(len / key);

for(i=0;i

for(j=0;j

p[n++]=s2[j*len+i]; }

p[n]=0;

return p;

}

三.程序功能示例

3.1示例截图:

3.2测试过程:

qing shu ru yuan shi ming wen:can you come here

canyoucomehere

qing shu ru jia mi mi yao:4

jia mi mi wen shi:comraueenchiyoea

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

qing shu ru jie mi mi yao:4

qing shu ru jia mi mi wen:comraueenchiyoea

jie mi ming wen shi:can you come here

四.设计体会与收获

这次C语言课程设计任务是设计一个程序解决数据的加密与解密问题,我与郭端杰同学一组,在设计源程序中,我是负责编写两个调用函数的,分别是加密函数和解密函数,搭档是负责编写主函数,在编译过程中,也遇到了不少困难和问题,像换位法加密和解密过程,到底怎样设计函数才能达到换位的要求,从而达到加密与解密的效果,在解决问题的过程中,也学会了不少知识。

五.参考文献

C语言高级实例解析;清华大学出版社。

C语言程序设计习题与实验设计指导;电子科技大学出版社,编者孙淑霞,周家纪,丁照宇。

物理与电子信息学院课程设计评定意见

注:本页与上一页用A3纸套印成封面和封底,课程设计报告正文用A4纸打印然后装订

文件加密与解密算法

文件加密与解密算法的分析与应用 摘要:随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否保护自己的个人隐私的关键。信息安全是社会稳定安全的必要前提条件。解决信息安全的方法是加密,所以加密解密就显得日益重要。本课题重点研究常用文件加密解密算法的基本思想及实现过程中所用到的方法、技术。同时对公钥密码体制和私钥密码体制进行了分析和研究,并对公钥密码体制和私钥密码体制的代表aes算法和des算法进行了研究和比较,最后结合常用算法设计实现了简易加密解密应用软件。 关键词:解密文件加密密码体制 des aes 中图分类号:tp314 文献标识码:a 文章编 号:1672-3791(2012)06(b)-0019-01 1 引言 1.1 文件加密与解密算法应用的意义 随着因特网、全球贸易和其它活动的增长,密码技术越来越多地用于个人的标识和认证等,它是取得信息安全性最有效的一种方法,是信息安全的核心技术。通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。

对称密码算法主要用于保证数据的机密性,通信双方在加密解密过程中使用它们共享的单一密钥。最常用的是数据加密标准(des)算法,但由于des的密钥长度较短,不适合于数据加密安全性的要求。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。 本文在研究分析了aes加密原理的基础上着重说明了aes算法实现的具体步骤:扩展密钥的异或运算、列变换、行变换、s盒变换等,以及各步骤的轮换顺序、密钥扩展程序keyexpansion、优化等。 2 加密/解密算法的原理分析[1] 2.1 原理 对于aes算法,输入分组、输出分组、状态长度均为128比特。nb=4,该值反应了状态中32位字的列数。对于aes算法,密钥k的长度是128、192或256 bits。密钥长度表示为nk=4、6或8,反应了密钥中32位字的个数。对于aes算法,算法的轮数依赖于密钥长度。将轮数表示为nr,当nk=4时nr=10;当nk=6时nr=12;当nk=8时nr =14。对于加密和解密变换,aes算法使用的轮函数由4个不同的以字节为基本单位的变换复合而成。 (1)字节替代,利用一个替代表。(2)将状态矩阵的每一行循环移位不同的位移量。(3)将状态矩阵中每一列的数据进行混合。(4)将轮密钥加到状态上。 2.1.1 s盒变换:对输入矩阵的任一个元素a做如下变换s[a]

信息加密与解密实验1-1 经典密码——凯撒密码

上机实验报告 一、实验目的: 本次上机实践所涉及并要求掌握的知识点。 1、理解凯撒密码的加密、解密过程 二、实验环境 PC机一台 三、实验内容 实验一移动3位的凯撒密码: 1.(1)用移动3位的凯撒密码加密“keep this secret” (2)用移动3位的凯撒密码加密你的某位老师的名字 2.破译下列谜语的答案。这些答案是用移动3位的凯撒密码来加密的。 (1)谜语:What do you call a sleeping bull?(你怎么称呼一只 睡着的公牛?) 答案: D EXOOGRCHU (2)谜语:What is the different between a teacher and a train? (老师与火车的区别是什么?) 答案:WKH WHDFKHU VDBV “QR JXP DOORZHG” WKH WUDLQ VDBV “FKHZ FKHZ” 实验二移动4位的凯撒密码: 1.请解密下面伊薇写给艾比的便条,她使用的是移动4位的凯撒密码 WSVVC PIX’W YWI GMTLIVW JVSQ RSA SR

2.谜语:What do you call a dog at the beach ?(你怎么称呼一只在海滩 上的狗?) 答案(移动4位密码):E LSX HSK 实验三凯撒密码破解: 1.凯撒密码破解 密文:NGBKGMUUJZOSK 实验四用数传递信息的方法破译以下的谜语: 1.谜语:What kind of cookies do birds like?(鸟儿喜欢什么种类的饼干?) 答案:2,7,14,2,14,11,0,19,4 2,7,8,17,15 2.谜语:What always ends everything?(什么总是能终结所有事情?) 答案:19,7,4 11,4,19,19,4,17 四、实验总结 通过上机实践,对所学内容的某个知识点有了更深入的理解,写出一些体会、学习心得,甚至是改进意见。 也可以写对界面设计、算法设计、代码编写、程序调试、程序改进等相关的收获、感悟。 五、附录(源程序清单,包含适当的注释)

数据的加密与解密

《C语言课程设计》课程设计报告 题目数据的加密与解密 学号110803022 姓名桂阳阳 年级专业2011级通信工程 指导教师蔡继盛 完成日期2012 年 6 月 5 日 安徽师范大学物理与电子信息学院 College of Physics and Electronic Information, Anhui Normal University

目录 课程设计任务书 (3) 摘要 (4) 关键词 (4) 原理 (4) 一.系统功能分析 (5) 1.1设计目的 (5) 1.2功能描述 (5) 二.C 语言程序编写 (6) 2.1程序结构图 (6) 2.2程序流程图 (6) 2.3程序源代码 (8) 三.程序功能示例 (13) 3.1示例截图 (13) 3.2测试过程 (16) 四.设计体会与收获 (16) 五.参考文献 (16)

《C 语言程序》课程设计任务书

摘要: 作为保障数据数据安全的一种方式,对于信息的加密技巧起源于欧洲,最广为人知的编码机器是德国的German Enigma,在第二次世界大战中德国人利用它创建了加密信息系统,从而解决军事信息的保密通讯问题。 尽管加密技术被首先使用在军事通信领域,但是人们或许出于安全的考虑,开始逐渐对于商业机密、政府文件等重要信息实施加密手段。数据加密应运而生。其基本原理是: 对明文(可读懂的信息)进行翻译,使用不同的算法对明文以代码形式(密码)实施加密。该过程的逆过程称为解密,即将该编码信息转化为明文的过程。 从事数据加密研究的人称为密码编码者(Cryptographer),而从事对数据解密的专业人士称为密码分析者(Cryptanalyst)。如今数据加密技术被广泛地应用与国民经济各个领域,特别是政府机关和国防情报部门,此外才是科学研究机关、商业部门、新闻出版、金融证券、交通管制与电力输送等部门。 而C语言程序设计教学不仅仅局限于使学生单纯地了解和掌握C语言的基本语法规范,而是要致力于培养学生运用C语言解决实际问题的编程能力。C 语言程序设计教学方法的改革让学生从多角度、以多方式去了解和掌握C语言以及程序设计的精髓,着重培养学生无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法的能力。 关键词:C语言,程序设计,换位法,换位位数,数据加密与解密 原理: 换位法加密的原理是将英文句子中的空格 去除,然后将句子排成若干行,每行的字符 数为换位位数,再按列输出即为密文,不足 部分填入随机字母。;例如英文can you come here 若换位位数取4,则密文为comraueench*yoe*, *代表随机字母,如右图所示:

如何给word文档加密和解密

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

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

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

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

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

文件加密与解密实验报告

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)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。

信息加密技术

信息加密技术研究 摘要:随着网络技术的发展,网络在提供给人们巨大方便的同时也带来了很多的安全隐患,病毒、黑客攻击以及计算机威胁事件已经司空见惯,为了使得互联网的信息能够正确有效地被人们所使用,互联网的安全就变得迫在眉睫。 关键词:网络;加密技术;安全隐患 随着网络技术的高速发展,互联网已经成为人们利用信息和资源共享的主要手段,面对这个互连的开放式的系统,人们在感叹现代网络技术的高超与便利的同时,又会面临着一系列的安全问题的困扰。如何保护计算机信息的安全,也即信息内容的保密问题显得尤为重要。 数据加密技术是解决网络安全问要采取的主要保密安全措施。是最常用的保密安全手段,通过数据加密技术,可以在一定程度上提高数据传输的安全性,保证传输数据的完整性。 1加密技术 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理。使其成为不可读的一段代码,通常称为“密文”传送,到达目的地后使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径达到保护数据不被人非法窃取、修改的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。数据加密技术主要分为数据传输加密和数据存储加密。数据传输加密技术主要是对传输中的数据流进行加密,常用的有链路加密、节点加密和端到端加密三种方式。 2加密算法 信息加密是由各种加密算法实现的,传统的加密系统是以密钥为基础的,是一种对称加密,即用户使用同一个密钥加密和解密。而公钥则是一种非对称加密方法。加密者和解密者各自拥有不同的密钥,对称加密算法包括DES和IDEA;非对称加密算法包括RSA、背包密码等。目前在数据通信中使用最普遍的算法有DES算法、RSA算法和PGP算法等。 2.1对称加密算法 对称密码体制是一种传统密码体制,也称为私钥密码体制。在对称加密系统中,加密和解密采用相同的密钥。因为加解密钥相同,需要通信的双方必须选择和保存他们共同的密钥,各方必须信任对方不会将密钥泄漏出去,这样就可以实现数据的机密性和完整性。对于具有n个用户的网络,需要n(n-1)/2个密钥,在用户群不是很大的情况下,对称加密系统是有效的。DES算法是目前最为典型的对称密钥密码系统算法。 DES是一种分组密码,用专门的变换函数来加密明文。方法是先把明文按组长64bit分成若干组,然后用变换函数依次加密这些组,每次输出64bit的密文,最后将所有密文串接起来即得整个密文。密钥长度56bit,由任意56位数组成,因此数量高达256个,而且可以随时更换。使破解变得不可能,因此,DES的安全性完全依赖于对密钥的保护(故称为秘密密钥算法)。DES运算速度快,适合对大量数据的加密,但缺点是密钥的安全分发困难。 2.2非对称密钥密码体制 非对称密钥密码体制也叫公共密钥技术,该技术就是针对私钥密码体制的缺陷被提出来的。公共密钥技术利用两个密码取代常规的一个密码:其中一个公共密钥被用来加密数据,而另一个私人密钥被用来解密数据。这两个密钥在数字上相关,但即便使用许多计算机协同运算,要想从公共密钥中逆算出对应的私人密钥也是不可能的。这是因为两个密钥生成的基本原理根据一个数学计算的特性,即两个对位质数相乘可以轻易得到一个巨大的数字,但要是反过来将这个巨大的乘积数分解为组成它的两个质数,即使是超级计算机也要花很长的时间。此外,密钥对中任何一个都可用于加密,其另外一个用于解密,且密钥对中称为私人密钥的那一个只有密钥对的所有者才知道,从而人们可以把私人密钥作为其所有者的身份特征。根据公共密钥算法,已知公共密钥是不能推导出私人密钥的。最后使用公钥时,要安装此类加密程序,设定私人密钥,并由程序生成庞大的公共密钥。使用者与其向联系的人发送

实现文件简单的加密和解密学士学位论文

实现文件简单的加密和解密 摘要 随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,信息安全问题已威胁到国家的政治、经济、军事、文化、意识形态等领域。同时,信息安全也是人们保护个人隐私的关键,是社会稳定安全的必要前提条件。 信息安全是一个综合性的交叉学科领域,广泛涉及数学、密码学、计算机、通信、控制、人工智能、安全工程、人文科学等诸多学科,是近几年迅速发展的一个热点学科领域。信息对抗和网络安全是信息安全的核心热点,它的研究和发展又将刺激、推动和促进相关学科的研究与发展。现今,加密是一种保护信息安全性最有效的方法。密码技术是信息安全的核心技术。 本文是一篇关于文件简单加密和解密软件——文件管家的毕业设计论文:用AES 算法实现文件的加密和解密,用MD5实现文件校验功能,用覆盖技术实现文件粉碎功能;并且设计了一套完整的注册码验证体系,防止软件被逆向,从而保护软件的安全。 关键词:文件;加密;解密;粉碎;反逆向;AES

Simple implementation file encryption and decryption Abstract With the arrival of the information society, people not only enjoy the enormous benefits of information resources, but also face the severe challenges of information security. Information security has become a worldwide problem. The problem has become a threat to the political, economic, military, cultural, ideological and other aspects of a country. Meanwhile, the information security is the key of protecting individual privacy and the prerequisite for social stability and security. Information security is a comprehensive interdisciplinary field, involving a wide range of disciplines such as mathematics, cryptography, computer, communications, control, artificial intelligence, security, engineering, humanities and so on, It has been being a hot subject with rapid development. Information countermeasure and network security is a core focus, whose research and developments will stimulate and accelerate the study and progress of related disciplines. So far, the password to information security technology is the most effective method. Cryptography is the core technology of information security. This article is about a software named File Manager, which can simply encrypt and decrypt files. The software uses AES algorithm to encrypt and decrypt files, MD5 to check the files, and overlay technique to achieve the feature of file shredder. Meanwhile, there is a complete set of design registration code verification system, which is used to protect the software from reverse, thus to protect the security of the software. Key words:file; encrypt; decrypt; shredder; Anti-Reverse; AES

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

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

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

一、设计思路 自从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。包和类结构图如下所示: 本课程设计,包和类结构图:

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

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

目录 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所示。

Oracle 实现 加密与解密

一、加密 CREATE OR REPLACE PROCEDURE LF.p_encrypt (decrypted_string1 in varchar2,encrypted_string1 out raw) IS key_string VARCHAR2(8):='shuanciy'; encrypted_string VARCHAR2(1000); encrypted_raw raw(1000); rawkey raw(240); decrypted_key VARCHAR2(24); iMode integer; BEGIN iMode:=1; decrypted_key:=Lpad(to_char(decrypted_string1),24,'0'); for i in1..length(key_string) loop rawkey := rawkey||hextoraw(to_char(ascii(substr(key_string, i,1)))); end loop; encrypted_string:=dbms_obfuscation_toolkit.DES3Encrypt( decrypted_key, key_string => rawkey, which => iMode); encrypted_raw := UTL_RAW.CAST_TO_RAW(encrypted_string); encrypted_string1:=encrypted_raw; END; / CREATE OR REPLACE FUNCTION LF.SF_P_ENCRYPT(abc IN RAW) RETURN VARCHAR2 IS bcd VARCHAR2(500); ----------------------------------------------- ---加密function add by Near 2015-02-03 ----------------------------------------------- BEGIN p_encrypt (decrypted_string1 => abc, encrypted_string1 => bcd); RETURN(bcd); END; / 二、解密 CREATE OR REPLACE PROCEDURE LF.p_decrypt (encrypted_string1 in raw,decrypted_string1 out varchar2) IS key_string VARCHAR2(8):='shuanciy'; rawkey raw(240);

(完整版)教科版高一信息技术必修1第三单元3.4加密和解密教学设计

3.4 加密与解密 本节内容按2课时设计。 第一课时 教学重难点 【教学重点】会分析生活中由密码引起的数据安全问题,理解对数据进行保护的意义。 【教学难点】用穷举法破解密码。 【教学过程】 一、引入 1.学生预习,阅读第77页“任务一解开网站账号被盗之谜”之“活动1 防范‘盗窃’行为”,填写第78页的表3.4.1。 2.教师检查,并评讲填写情况,引出数据安全、密码的话题。 表3.4.1 密码盗窃与防盗分析表 二、密码 密码是指用来核对用户ID以验证用户就是本人的一组字符。 活动2设置安全密码 打开教科书配套资源中的“数据安全性测试.py”,运行并测试穷举搜索一个5位、7位和9位的数字密码,分别需要多长时间,填写表3.4.2。(详见配套资源“数据安全性测试(有界面).fld”和“数据安全性测试(有界面).py”) 表3.4.2 穷举搜索密码需要的时间

实现穷举搜索的自定义函数jiemi()的程序代码如下: def jiemi(): d1=datetime.datetime.now() #获取当前系统时间d1 p=int(varin.get()) #获取输入文本框的数字密码 for i in range(0,p+1): #从0循环到正确密码数值 if i==p: #如果密码相同 d2=datetime.datetime.now() #获取当前系统时间d2 d=d2-d1 #取得时间差 #在输出文本框中显示解密用时 varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒") 程序运行效果如下: 【比一比】当然,我们也可以编写无可视化界面的程序,程序更简单。(详见配套资源“数据安全性测试(无界面).py”) 程序运行效果如下: 请比较有可视化界面与无可视化界面两个程序运算的快慢,将最快的结果填入表3.4.2。 【算一算】 你的电脑1秒最多能试探大约多少个整数密码? 【做一做】 1.有可视化界面程序中的jiemi()函数中的for循环改为while条件循环:

加密狗加密与解密方法技术白皮书

加密狗加密与解密方法 加密狗加密方法 1 打开EZCAD软件包,找到“JczShareLock3.exe”执行程序。 2 双击执行该程序,弹出“Select parameter”对话框,如图1所示。在图中可以看出我 们可以设置两级密码,这两个密码是完全独立的,其中任何一次使用达到设定要求以后,加密狗就会限定板卡的使用权限。如同时设置两级密码,权限应不同,即这两个密码设置的时间等权限长短不一。如图,软件默认的是一级密码选中状态,如果想选择二级密码直接点选即可。 图1 Select Parameter 3 当我们选择好设定密码的级数后,点击确定按钮,弹出“JczShareLock”对话框,如图 2是软件默认的发布版界面,点击下拉菜单,我们可以选择共享版模式,如图3。 图2 发布版界面

图3 共享版界面 下面我们分别说明发布版模式和共享版模式的加密方法。 4 首先是发布版模式如图2。发布版模式下没有次数,天数,时间等的设置,只有密码设 置,主要应用于保护自己模式的设置,防止别人更改。点击“写入/Write In”按钮,进入密码写入界面。如图4。如果我们是第一次写入密码,那么就直接勾选修改密码选项,在新密码下面的前一个输入栏里输入4位数字,在后面的输入栏里输入4数字,这样完成了密码的初步设定,然后在确认密码下的输入栏内重复输入上面设定的密码,然后点击确认,完成密码的设定。如果我们是修改密码的话,那么我们首先要在密码写入界面上方的输入密码下的正确输入栏内输入以前设定的密码,然后在勾选修改密码,输入新的密码。否则修改密码就会失败,并出现“密码错误”提示信息。 图4 密码写入界面 5 共享版的密码设定,如图3是共享版的界面。在这里我们首先要设定好限制使用的次数, 天数,时间,直接在后面的输入栏内直接输入即可。这里注意:我们所设定的时间,天数是以软件运行所在电脑的内部时钟为准的,我们编写之前一定要注意,我们所使用的电脑的时间是否准确。设定好这些后点击“写入/Write In”按钮,进入密码写入界面。 共享版的密码写入界面与发布版是一样的,操作也相同,可参考步骤4进行操作。

(完整版)教科版高一信息技术必修1第三单元3.4加密和解密教学设计

3.4 加密与解密 本节内容按2 课时设计。 第一课时 教学重难点 【教学重点】会分析生活中由密码引起的数据安全问题,理解对数据进行保护的意义。 【教学难点】用穷举法破解密码。 【教学过程】 一、引入 1. 学生预习,阅读第77 页“任务一解开网站账号被盗之谜”之“活动1 防范‘盗窃'行为”,填写第78 页的表3.4.1 。 2. 教师检查,并评讲填写情况,引出数据安全、密码的话题。 3.4.1 二、密码 密码是指用来核对用户ID以验证用户就是本人的一组字符。 活动2设置安全密码 打开教科书配套资源中的“数据安全性测试.py ”,运行并测试穷举搜索一个5 位、7位和9位的数字密码,分别需要多长时间,填写表3.4.2 。(详见配套资源“数据安全性测试(有界面).fld ”和“数据安全性测试(有界面).py ”) 表3.4.2 穷举搜索密码需要的时间

# 在输出文本框中显示解密用时 varout.set(str(d.seconds)+" 秒"+str(d.microseconds/1000)+" 毫秒") 程序运行效果如下: 【比一比】当然,我们也可以编写无可视化界面的程序,程序更简单 配套资源“数据安全性测试(无界面).py ”) 程序运行效果如下: 请比较有可视化界面与无可视化界面两个程序运算的快慢,将最快的结果填入表3.4.2 。 你的电脑1秒最多能试探大约多少个整数密码? 【做一做】 1. 有可视化界面程序中的jiemi() 函数中的for 循环改为while 条件循环: 实现穷举搜索的自定义函数 jiemi() def jiemi(): d1=datetime.datetime.now() # p=int(varin.get()) # for i in range(0,p+1): # if i==p: # d2=datetime.datetime.no w() d=d2-d1 # 的程序代码如下: 获取当前系统时间d1 获取输 入文本框的数字密码从0循环 到正确密码数值如果密码相同 # 获取当前系统时间d2 取得时间差 详见

ASE加密与解密

ASE加密与解密 using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Security.Authentication; using System.Security.Cryptography; namespace XMLRead_Encoder { class RebectASE { ///

/// AES加密 /// /// 要加密的字符串 /// 密钥 /// 向量 /// 返回加密完字符串,加密失败返回false public static string AESEncrypt(string plainStr,string IV,string Key) { byte[] bKey = Encoding.UTF8.GetBytes(Key); byte[] bIV = Encoding.UTF8.GetBytes(IV); byte[] byteArray = Encoding.UTF8.GetBytes(plainStr); string encrypt = null; Rijndael aes = Rijndael.Create(); try { using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); encrypt = Convert.ToBase64String(mStream.ToArray()); } } } catch { return "false";

实验9 加密与解密实验

新疆师范大学 计算机网络安全(本科) 实验报告 实验名称:实验9 加密与解密实验 院系:计算机科学技术学院 班级: 2011-01班 学生姓名:木拉提·巴力 学号: 20111601141025 合作者姓名:米热古丽·塔力浦 指导教师:赵新元老师 教师评阅结果: 教师评语: 实验日期 2014 年 12 月 28 日

一、实验目的 1、掌握Caeser密码原理,理解Caeser密码加密、解密过程。 2、了解使用程序实现DES和RSA加解密。 3、学会使用PGP加密软件加密文件与邮件。 二、实验内容 1、编写实现Caeser密码加密、解密 2、了解程序实现DES和RSA加密、解密 3、使用PGP加密文件 4、使用PGP加密邮件 三、实验原理 请简介一下PGP加密的基本原理。 四、实验步骤 1、编写一个程序能够实现Caeser加密与解密。假定Caeser密码的偏移量为3,本程序只对小写字符进行加密,要求用户从键盘输入你的姓名拼音(假设长度小于100),将其进行加密后显示出来,然后再显示出原文。请截图显示你的程序运行结果,并附上源代码。 1.加密程序运行结果: 源代码: #include "stdafx.h" #include #include #define MAXSIZE 100

int main() { char str[MAXSIZE]; int i; int offset; int n; printf("请输入要加密的字符串:"); gets(str); printf("请输入要偏移量:"); //若将a变为b,则偏移量为1,以此类推,偏移量在1-25之间 scanf("%d%*c", &offset); n = strlen(str); for (i = 0; i < n; i++) { if ('a' <= str[i] && str[i] <= 'z' - offset || 'A' <= str[i] && str[i] <= 'Z' - offset) str[i] += offset; else str[i] += offset - 26; } printf("加密后的字符串是:"); puts(str); return 0; } 2.解密程序运行结果: 源代码:

文件的加密解密压缩和压缩文件密码的管理

日常生活中我们通常会分享一些个人视频,但处于隐私考虑,我们会想到给文件加密,嗯,不错,但是我们常用的的视频格式是不支持文件加密的,怎么办?看到网上一些网站有时分享软件时会将软件打包成RAR或ZIP压缩格式并加密,只有访问网站源地址才能获得密码,即提高了网站访问量又将一些不太好找的软件分享给大家。那么我们就依照这个思路用压缩软件压缩视频并加密后上传到各大网盘分享给朋友,这样不仅间接的将视频进行了加密,保护了我们的个人隐私,更是将较大的视频文件批量的进行了分享。但很多人只进行过文件的解压/压缩,并不知道如何加密或者是并不会进行灵活的加密密码管理,这里笔者就像大家介绍一下如何给文件加密压缩并管理密码。 一般的常规方法是选定要压缩的文件并右击,在弹出的菜单中选择“添加到压缩文件” 弹出压缩选项,1.选定压缩格式 2.点击“设置密码”在这里笔者要说一下,如果选定RAR格式,在解压或打开时不会显示包内文件名,而选定ZIP格式,在解压或打开时会显示包内文件名,所以笔者建议大家如果对文件的保密程度要求较高那么就选RAR格式,因为ZIP格式不支持文件名加

密。 设置好密码点击“确定” 等待文件压缩好,这样就完成了文件的压缩加密

当然,我们有时要对没有加密的压缩文件设定密码,需要注意的是下列方法需要使用好压软件,并且文件格式为ZIP(RAR文件不支持),笔者上述使用的WINRAR无法进行下列操作,大家需要用好压进行操作。 先打开这个压缩文件,点击“文件”-“密码” 弹出窗口后选择“密码”选项卡,点击“设置新的密码”设置好密码然后点击“确定”即可

如果你想把压缩包中的密码清除掉,则选“清除已有密码”,然后点“确定”,会弹出提示让你输入之前设置的密码,输入后确定即可清除掉密码 下面笔者再介绍一下在WINRAR中的文件压缩密码管理 首先打开WINRAR,然后选择“选项”-“设置”

DES加密与解密过程原理解析

网络与信息安全作业 题目:DES加密与解密过程原理解析姓名: 学号: 班级: 日期:2016年3月30日

一、D ES简介: DES (Data Encryption Standard)是对称加解密算法的一种,由IBM公司W.Tuchman和C.Meyer在上个世纪70年代开发,该算法使用64位密钥(其中包含8位奇偶校验,实际密钥长度为56位)对以64为单位的块数据加密,产生64位密文数据,然后使用相同的密钥进行解密。密钥只有通信双方知晓,不对第三方公开。 二、D ES算法过程: 1.DES的加密过程: 第一阶段:初始置换IP。在第一轮迭代之前,需要加密的64位明文首先通过初始置换IP 的作用,对输入分组实施置换。最后,按照置换顺序,DES将64位的置换结果分为左右两部分,第1位到第32位记为L0,第33位到第64位记为R0。 表1:置换IP表 上表为置换IP表,将输入64位的第58位换到第一位,第50位换到第二位,依此类推,最后一位是原来的第7位。L0是输出的前32位,R0是后32位。比如:置换前的输入值为D1D2D3...D64,则经过初始置换后的结果为:L0=D58D50...D8,R0=D57D49 (7) 第二阶段:获取函数f和子密钥。函数f有两个输入:32位的Ri-1和48位Ki,f函数的处理流程如下图所示。

E变换的算法是从 Ri-1的32位中选取某些位,构成48位。即E 将32比特扩展变换为48位,变换规则根据E位选择表,如表2所示。 表2:E位选择表 Ki是由密钥产生的48位比特串,具体的算法下面介绍。将E的选位结果与Ki作异或操作,得到一个48位输出。分成8组,每组6位,作为8个S盒的输入。每个S盒输出4位,共32位(如下图)。

文件的加密与解密算法

using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace BS.Utility { public class MySecurity { #region 构造函数 public MySecurity() { } #endregion #region ( 0 )Rijndael算法 private SymmetricAlgorithm mobjCryptoService= new RijndaelManaged(); private static string Key= "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ $lhj!y6&(*jkP87jH7 "; ///

/// 获得密钥 /// /// 密钥 private byte[] GetLegalKey() { string sTemp = Key; mobjCryptoService.GenerateKey(); byte[] bytTemp = mobjCryptoService.Key; int KeyLength = bytTemp.Length; if (sTemp.Length > KeyLength) sTemp = sTemp.Substring(0, KeyLength); else if (sTemp.Length < KeyLength) sTemp = sTemp.PadRight(KeyLength, ' '); return ASCIIEncoding.ASCII.GetBytes(sTemp); } /// /// 获得初始向量IV /// /// 初试向量IV

相关文档
最新文档