文件的移位加密解密实验报告
- 格式:doc
- 大小:230.50 KB
- 文档页数:8
文件加密操作实验报告文件加密操作实验报告一、引言文件加密是一种常见的数据安全保护手段,通过将文件内容转换为不可读的形式,以防止未经授权的访问和使用。
本实验旨在探究不同的文件加密操作方法,并评估其安全性和效果。
二、实验目的1. 了解常见的文件加密算法和技术;2. 掌握文件加密操作的基本步骤和流程;3. 比较不同加密算法对文件加密效果和性能的影响;4. 分析不同加密算法的优缺点,并提出改进方案。
三、实验方法1. 实验环境:使用计算机及相关软件工具进行实验;2. 实验材料:选择多个不同类型的文件作为实验对象;3. 实验步骤:3.1 选择合适的加密算法:对称加密算法(如DES、AES)、非对称加密算法(如RSA)或混合加密算法;3.2 生成并保存秘钥:根据选定的算法生成相应长度的秘钥,并保存在安全位置;3.3 加密文件:使用选定的算法和秘钥对待加密文件进行处理,生成相应的加密文本或二进制数据;3.4 解密文件:使用相同的算法和秘钥对加密文件进行解密,恢复原始文件;3.5 分析结果:比较加密前后文件的差异,评估加密算法的效果和性能。
四、实验结果1. 对称加密算法:4.1 DES加密:4.1.1 步骤:选择一个8字节的秘钥,使用DES算法对待加密文件进行处理;4.1.2 结果:生成一个与原始文件大小相同的加密文件;4.1.3 分析:DES算法具有较高的安全性和可靠性,但速度较慢; 4.2 AES加密:4.2.1 步骤:选择一个16字节、24字节或32字节的秘钥,使用AES算法对待加密文件进行处理;4.2.2 结果:生成一个与原始文件大小相同的加密文件;4.2.3 分析:AES算法在安全性和速度方面都表现优秀,是目前最常用的对称加密算法之一。
2. 非对称加密算法:4.3 RSA加密:4.3.1 步骤:生成公钥和私钥对,并使用公钥对待加密文件进行处理;4.3.2 结果:生成一个较大且与原始文件大小不同的加密文件;4.3.3 分析:RSA算法具有较高的安全性,但加密和解密速度较慢,适用于对小文件或敏感信息进行加密。
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、总体设计本程序主要是对已知文件通过修改文件内容以达到文件加密的目的。
整个系统由以下几大功能模块组成。
1.1主控选择模块此模块是主程序操作界面,供用户进行选择。
用户可选择执行加密或解密操作。
一、实验目的1. 理解文件加密的基本原理和重要性。
2. 掌握使用加密工具对文件进行加密和解密的方法。
3. 提高对数据安全性的认识和实际操作能力。
二、实验环境1. 操作系统:Windows 102. 加密工具:TrueCrypt3. 实验材料:待加密文件(如文档、图片等)三、实验内容1. 理论学习(1)文件加密的基本原理:文件加密是通过将原始文件内容进行转换,使得只有拥有正确密钥的人才能解密还原原始文件的过程。
(2)加密算法:常见的加密算法有AES、DES、RSA等,其中AES加密算法因其安全性高、速度快而被广泛应用。
2. 实验步骤(1)准备实验材料:选择一个待加密的文件,如Word文档、图片等。
(2)安装TrueCrypt软件:从官方网站下载TrueCrypt软件,安装并运行。
(3)创建加密文件容器:在TrueCrypt软件中,点击“创建容器”,选择“标准TrueCrypt容器”作为加密方式,设置容器大小和加密算法。
(4)将文件放入加密容器:将待加密的文件拖拽到加密容器中,此时文件将被自动加密。
(5)保存加密文件:将加密后的文件保存到安全位置。
(6)解密文件:在TrueCrypt软件中,选择加密文件容器,输入密码,点击“打开容器”,即可解密文件。
3. 实验结果(1)加密文件:实验成功将待加密文件加密,并生成了加密文件容器。
(2)解密文件:使用正确密码成功解密加密文件,验证了加密和解密过程的有效性。
四、实验分析1. 文件加密的重要性(1)保护隐私:加密文件可以有效防止他人未经授权访问和篡改文件内容,保护个人隐私。
(2)数据安全:在数据传输过程中,加密文件可以防止数据被截获和篡改,提高数据安全性。
(3)合规要求:某些行业或组织对数据安全有严格要求,加密文件可以帮助企业或个人满足合规要求。
2. TrueCrypt加密工具的特点(1)免费:TrueCrypt是一款免费的开源加密软件,用户可以免费下载和使用。
竭诚为您提供优质文档/双击可除加密解密实验报告篇一:Aes加密解密实验报告信息安全工程课程实验报告Aes加密解密的实现课程名称:信息安全工程学生姓名:学生学号:专业班级:任课教师:黄小菲3112041006系统工程2038班蔡忠闽20XX年11月22日目录1.背景................................................. ................................................... . (1)1.1Rijndael密码的设计标准:............................................... .................................11.2设计思想................................................. ................................................... .......12.系统设计................................................. ................................................... . (2)2.1系统主要目标................................................. ................................................... ..22.2功能模块与系统结构................................................. . (2)2.2.1字节替换subbyte............................................ ...........................................22.2.2行移位shiftRow........................................... ..............................................22.2.3列混合mixcolumn.......................................... ..........................................32.2.4轮密钥加AddRoundKey........................................ .....................................42.2.5逆字节替换................................................. ..............................................42.2. 6逆行移位InvshiftRow........................................ .. (4)2.2.7逆列混淆................................................. .. (4)3加密模式................................................. ................................................... (5)3.1电子密码本ecb模式................................................. ........................................53.2加密块链模式cbc模......................................64系统功能程序设计................................................. ................................................... . (8)4.1基本加密部分................................................. ................................................... ..84.1.1字节替换................................................. ...................................................84.1.2行移位................................................. ................................................... ...84.1.3列混合................................................. ................................................... (9)4.1.4轮密钥加.................................................94.1.5密钥扩展................................................. . (10)4.1.6逆字节替换................................................. ..............................................114.1 .7逆行移位................................................. .. (1)14.1.8逆列混合................................................. . (12)4.1.9加密................................................. ................................................... .....124.1.10解密................................................. ................................................... (13)5实验结果................................................. (14)5.1需要加密文件................................................. .. (1)45.2实验加密解密结果................................................. ...........................................156参考资料................................................. ................................................... . (16)1.背景Aes,密码学中的高级加密标准(Advancedencryptionstandard,Aes),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。
C语言程序设计课程报告姓名:学号:所在院系:所在班级:指导老师:完成课题:文件移位加密与解密学生信息管理系统设计完成时间:目录第一题文件位移加密与解密 (3)一、课程设计目的及要求 (3)1.1设计目的 (3)1.2设计要求 (3)二、课程设计内容 (3)三、系统概述 (4)3.1功能简介 (4)3.2设计思路 (4)四、程序功能的设计与分析 (4)4.1总体设计 (4)4.2密钥key的检查 (4)4.3加密模块 (4)4.4解密模块 (5)4.5程序框图 (6)五、调试及运行结果 (7)六、总结 (9)6.1遇到的问题及解决方法 (9)6.2收获及体会 (9)参考文献 (9)附录:程序代码 (10)第二题学生信息管理系统设计 (13)一、课程设计目的及要求 (13)1.1设计目的 (13)1.2设计要求 (13)二、课程设计内容 (14)三、系统概述 (14)3.1功能简介 (14)3.2详细功能 (15)四、系统详细设计 (16)五、程序框图 (17)六、程序输出结果 (20)七、总结 (23)参考文献 (23)附录:程序代码 (24)第一题文件位移加密与解密一、课程设计目的及要求1.1设计目的(1)提高程序设计和分析的能力。
(2)深入了解C++程序设计的知识与技巧。
(3)进一步掌握C++程序设计的思想。
(4)初步了解程序加密与解密的思想。
1.2设计要求(1)完整的理解课程设计任务的要求。
(2)用C++语言实现系统。
(3)函数功能划分合理(结构化程序设计)。
(4)设计的程序结构完整、简明、可读性强。
(5)界面友好(良好的人机交互),注释合理。
(6)设计的程序调试成功,能稳定的运行。
二、课程设计内容文件移位加密与解密1)文件加密;2)文件解密。
备注:将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
例如:加密:设原文为abcdef,密钥为5,则有abcdef每个字母按字母表向后移动5们(注:z后接a)可得到密文(乱码)fghijkl;对该文件解密:文件内容为fghijk1,密钥为5,则有fghijk1每个字母向前移动5位(注a后接z),可得到原文abcdef。
文件的移位加密与解密一目的将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反,使文件恢复原来的字母。
二需求分析将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
加密:用户选择功能(运行后键盘输入1进行选择),从键盘输入一个任意整数密钥,然后对已知文件“abc.txt”进行加密。
加密后屏幕显示加密后文件内容并且文件内容改变。
成为加密文件。
解密:通过选择功能(运行后键盘输入2进行选择)对加密后的文件进行解密,输入密钥后能显示出解密后文件内容并且文件变为解密的文件。
通过加密解密可以在文件内容与乱码之间来回转换,使文件内容更安全。
在D盘中建立abc.txt文件并在其中输入字符串abcdef,运行程序,选择1对文件进行加密,输入密钥1,文件abc.txt会变为bcdefg。
三概要设计本程序有一个模块:main(){定义整数选择,密钥;定义字符型数组保存源文件的内容,保存改变后文件的内容;定义i=0,用来初始化数组;定义文件指针1,2 第一个只读打开文件,第二个只写打开文件把更改后的文件放入已知文件中。
没有其他函数。
}四详细设计主程序流程图定义最大数组,以及所使用的函数的头文件名#include<stdio.h>#define M 200#include<stdlib.h>文件指针,以及全局变量int password,choose;char c,yuan[M];int i=0;FILE *fp,*fp1;对文件的打开,并对所需功能进行选择。
fp=fopen("D:\\abc.txt","r");if(fp==NULL)printf("the document can't be open!\n");printf("please choose the function\n");printf("1:encrypt 2:decript \n");scanf("%d",&choose);if(choose!=1&&choose!=2)printf("please input a right number!\n");system("pause");对文件进行加密或者解密处理,并把处理结果输出在屏幕上。
河南理工大学计算机科学与技术学院课程设计报告2010 — 2011学年第一学期课程名称设计题目学生姓名学号专业班级指导教师2011 年 01 月 08 日目录●封面 (01)●设计任务书 (03)●功能设计 (03)●结构流程图 (05)●程序实现代码 (05)●程序设计总结 (08)●个人总结 (12)●致谢 (13)●参考文献 (13)课程设计任务书功能设计●设计目的本课程设计的目的是为了保证个人数据资料不被他人非法窃取使用,保护个人的隐私及重要文件!●功能描述本程序主要是对已知文件(为英文字符)通过一定的算法将其转换成非本身的其他英文字母以达到文件加密的目的。
整个系统由以下几大功能模块组成。
1.主控选择模块此模块是主程序操作界面,供用户进行选择。
用户可选择执行加密或解密操作。
2.加密模块加密模块主要是完成对文件的加密操作。
从外部文件中读入任意一个文件并将它加密并显示出来!3.解密模块解密模块是完成对文件的解密工作,将密文转换为可被识别的明文。
从外部文件中读入任意一个文件并将它解密并显示出来!结构流程图程序实现代码#include<iostream.h>#include<stdio.h>#include<stdlib.h>#define M 1000 //预设一个指定文件大小的数字M,方便以后改变void main(){FILE *fp;char ch,TEXT[M]; // M 的数值可以根据文件的大小随意改变int ch1,n,key;cout<<" 文件移位加密与解密"<<endl;cout<<"请将加密(解密)文件复制至“文件移位加密与解密”文件夹中,且该文件为纯文本格式。
"<<endl;while(1){cout<<"请输入文件名:"<<endl; //软件使用帮助和支持cin>>TEXT;if((fp=fopen(TEXT,"r"))==NULL){cout<<"open file fail"<<endl;exit(0);}cout<<"请输入密码:"<<endl;cin>>key;key=key%26;cout<<"加密请输入1,解密请输入2:"<<endl;cin>>n;if(n==1) // n=1时,执行加密算法{cout<<"加密结果:";while((ch=fgetc(fp))!=EOF){if(ch>='A'&& ch<='Z') // 加密文件内容为A-Z{ch=ch+key;if(ch>'Z'){ch=ch-26;}}if(ch>='a'&& ch<='z') //加密文件内容为a-z{ch1=(int)ch+key;if(ch1>122){ch=(char)(ch1-26);}else ch=(char)ch1;}cout<<ch;}cout<<endl;n=0;fclose(fp);}else if(n==2) // n=2时,执行解密算法{cout<<"解密结果:";while((ch=fgetc(fp))!=EOF){if(ch>='A'&& ch<='Z') // 解密文件内容为A-Z{ch=ch-key;if(ch<'A')ch=ch+26;}if(ch>='a'&& ch<='z') //解密文件内容为a-z{ch=ch-key;if(ch<'a')ch=ch+26;}cout<<ch;}cout<<endl;n=0;fclose(fp);}cout<<endl;cout<<endl;cout<<endl;cout<<" -·-·-感谢您的使用,欢迎再次使用-·-·- "<<endl;}}程序设计总结文件移位解密:1.运行程序后,如图示:2.输入文件名(此程序附带文件默认为(un)code.txt),如图示:3.输入密码,如图示:4.选择解密,如图示:文件移位加密1.运行程序后,如图示:2. 输入文件名(此程序附带文件默认为(un)code.txt),如图示:3. 输入密码,如图示:4.选择加密,如图示:个人总结正如早年瑞士联邦技术学院沃思博士所提出的那个著名的公式:“程序=算法+数据结构”,我在本次程序设计中深刻的体会到了算法的重要性。
文件加密操作实验报告概述文件加密是一种保护数据安全的重要手段,能够将敏感信息转化为无意义的字符序列,防止信息被非法获取和篡改。
本实验旨在探索文件加密的原理、方法和应用,并通过具体实例演示文件加密操作的实施过程。
原理介绍文件加密的基本原理是通过一定的算法将原始数据转化成难以理解的密文,只有经过相应的解密算法才能将密文恢复成可读的明文。
常见的加密算法如对称加密算法、非对称加密算法和哈希算法等。
1. 对称加密算法对称加密算法使用相同的密钥进行加密和解密操作。
常用的对称加密算法有DES、AES等。
其流程如下: 1. 选择一个密钥。
2. 将明文划分为固定长度的数据块。
3. 对每个数据块进行加密,生成对应的密文。
4. 将密文传输或保存。
5. 接收方使用相同的密钥对密文进行解密,恢复成明文。
2. 非对称加密算法非对称加密算法使用一对密钥,分别为公钥和私钥。
公钥负责加密,私钥负责解密。
常见的非对称加密算法有RSA、DSA等。
其流程如下: 1. 生成一对密钥,包括公钥和私钥。
2. 将公钥传输给加密方,私钥保密不公开。
3. 加密方使用公钥对明文进行加密,生成密文。
4. 密文传输给解密方。
5. 解密方使用私钥对密文进行解密,得到明文。
3. 哈希算法哈希算法将任意长度的数据转化为固定长度的哈希值,具有不可逆、唯一性和固定性的特点。
常用的哈希算法有MD5、SHA-1等。
其流程如下: 1. 将原始数据作为输入。
2. 哈希算法对输入数据进行计算,生成哈希值。
3. 可以通过哈希值验证数据的完整性,但无法从哈希值反推原始数据。
4. 哈希算法具有唯一性,不同的数据生成的哈希值一定是不同的。
方法与实验为了深入了解文件加密操作,我们进行了以下实验。
1. 对称加密实验1.选择一个对称加密算法,如AES。
2.准备一份明文文件,如.txt文件。
3.选择一个密钥,进行加密操作。
4.生成密文文件,并将其保存。
5.使用相同的密钥进行解密操作,将密文恢复成明文。
一、实验目的1. 理解密码学的基本概念和原理;2. 掌握常用密码算法的原理和实现方法;3. 通过实验加深对密码算法的理解和应用。
二、实验内容本次实验主要涉及以下密码算法:1. 移位密码;2. 维吉尼亚密码;3. 仿射密码;4. 单表代替密码;5. 周期置换密码。
三、实验原理1. 移位密码:将明文中的每个字母按照密钥所指定的位数进行左右移位,得到密文。
解密时,将密文中的每个字母按照密钥所指定的位数进行相反方向的移位,恢复明文。
2. 维吉尼亚密码:将明文中的每个字母按照密钥所指定的字母序列进行移位,得到密文。
解密时,将密文中的每个字母按照密钥所指定的字母序列进行相反方向的移位,恢复明文。
3. 仿射密码:将明文中的每个字母通过一个线性方程进行加密,得到密文。
解密时,将密文中的每个字母通过逆线性方程进行解密,恢复明文。
4. 单表代替密码:将明文中的每个字母按照一个固定的代替表进行替换,得到密文。
解密时,根据代替表进行反向查找,恢复明文。
5. 周期置换密码:将明文中的每个字母按照一个固定的周期进行置换,得到密文。
解密时,根据周期进行反向置换,恢复明文。
四、实验步骤1. 实验一:移位密码(1)选择密钥,如密钥为3,表示每个字母左移3位;(2)编写加密函数,将明文中的每个字母按照密钥进行移位,得到密文;(3)编写解密函数,将密文中的每个字母按照密钥进行相反方向的移位,恢复明文;(4)进行加密和解密操作,验证算法的正确性。
2. 实验二:维吉尼亚密码(1)选择密钥,如密钥为“KEY”,表示每个字母按照密钥中的字母序列进行移位;(2)编写加密函数,将明文中的每个字母按照密钥进行移位,得到密文;(3)编写解密函数,将密文中的每个字母按照密钥进行相反方向的移位,恢复明文;(4)进行加密和解密操作,验证算法的正确性。
3. 实验三:仿射密码(1)选择密钥,如密钥为(a, b),表示加密方程为(Ci = (ai pi + b) mod 26);(2)编写加密函数,将明文中的每个字母按照加密方程进行加密,得到密文;(3)编写解密函数,将密文中的每个字母按照逆加密方程进行解密,恢复明文;(4)进行加密和解密操作,验证算法的正确性。
贵州大学计算机科学与信息学院计算机科学与技术系实验报告纸INT 21HJC MOVEPTRMOV BX,HANDLEMOV CX,LENMOV AH,40H ;写文件 LEA DX,BUFINT 21HJC WREMOV BX,HANDLEMOV AH,3EH ;关闭文件 INT 21HEXIT: MOV AH,4CHINT 21HOPENE: LEA DX,OPENRCALL DISPSTRJMP EXITWRE: LEA DX,WRRCALL DISPSTRJMP EXITREDEE: LEA DX,READRCALL DISPSTRJMP EXITMOVEPTR:LEA DX,MPTRCALL DISPSTRJMP EXITDISPSTR PROCMOV AH,9INT 21HRETDISPSTR ENDPCRLF PROCMOV DL,0AHINT 21HMOV DL,0DHINT 21HRETCRLF ENDPCODE ENDSEND START4、调试过程及实验结果1、运行源汇编程序(FILE.ASM),通过宏汇编(MASM),连接(LINK),生成可执行文件:FILE.EXE2、加密txt的文本文件sixteen.txt①、对文件的加密操作:②、加密前的文件:③、加密后的文件:④、解密后的文件:3、对doc的word文档进行加密:①、对文件的加密和解密操作加密之前的文件:对文件进行加密操作:加密后的文件:对文件进行解密操作:解密后的文件:五:总结做完本实验后感觉受益匪浅,同时我觉得这个实验在我们生活中很实用,仅仅通过做这么一个实验就想有很高的造诣那是不可能的,因此还需要我们在以后的学习中不断努力,但是本实验还是给了我很大的启发,它可以指引我自主学习。
实验中也遇到了一些错误,比如在给doc文件加密和解密过程中出现打开错误,通过不断寻找以及调试最后得以成功。
最终原因还是过于粗心,因此以后需要细心,认真去对待每一件事。
河南理工大学计算机科学与技术学院课程设计报告2010 — 2011学年第一学期课程名称设计题目学生姓名学号专业班级指导教师2011 年01 月08 日目录●封面 (01)●设计任务书 (03)●功能设计 (03)●结构流程图 (05)●程序实现代码 (05)●程序设计总结 (08)●个人总结 (12)●致谢 (13)●参考文献 (13)课程设计任务书功能设计●设计目的本课程设计的目的是为了保证个人数据资料不被他人非法窃取使用,保护个人的隐私及重要文件!●功能描述本程序主要是对已知文件(为英文字符)通过一定的算法将其转换成非本身的其他英文字母以达到文件加密的目的。
整个系统由以下几大功能模块组成。
1.主控选择模块此模块是主程序操作界面,供用户进行选择。
用户可选择执行加密或解密操作。
2.加密模块加密模块主要是完成对文件的加密操作。
从外部文件中读入任意一个文件并将它加密并显示出来!3.解密模块解密模块是完成对文件的解密工作,将密文转换为可被识别的明文。
从外部文件中读入任意一个文件并将它解密并显示出来!结构流程图程序实现代码#include<iostream.h>#include<stdio.h>#include<stdlib.h>#define M 1000 //预设一个指定文件大小的数字M,方便以后改变void main(){FILE *fp;char ch,TEXT[M]; // M 的数值可以根据文件的大小随意改变int ch1,n,key;cout<<" 文件移位加密与解密"<<endl;cout<<"请将加密(解密)文件复制至“文件移位加密与解密”文件夹中,且该文件为纯文本格式。
"<<endl;while(1){cout<<"请输入文件名:"<<endl; //软件使用帮助和支持cin>>TEXT;if((fp=fopen(TEXT,"r"))==NULL){cout<<"open file fail"<<endl;exit(0);}cout<<"请输入密码:"<<endl;cin>>key;key=key%26;cout<<"加密请输入1,解密请输入2:"<<endl;cin>>n;if(n==1) // n=1时,执行加密算法{cout<<"加密结果:";while((ch=fgetc(fp))!=EOF){if(ch>='A'&&ch<='Z') // 加密文件内容为A-Z{ch=ch+key;if(ch>'Z'){ch=ch-26;}}if(ch>='a'&&ch<='z') //加密文件内容为a-z{ch1=(int)ch+key;if(ch1>122){ch=(char)(ch1-26);}elsech=(char)ch1;}cout<<ch;}cout<<endl;n=0;fclose(fp);}else if(n==2) // n=2时,执行解密算法{cout<<"解密结果:";while((ch=fgetc(fp))!=EOF){if(ch>='A'&&ch<='Z') // 解密文件内容为A-Z{ch=ch-key;if(ch<'A')ch=ch+26;}if(ch>='a'&&ch<='z') //解密文件内容为a-z{ch=ch-key;if(ch<'a')ch=ch+26;}cout<<ch;}cout<<endl;n=0;fclose(fp);}cout<<endl;cout<<endl;cout<<endl;cout<<" -·-·-感谢您的使用,欢迎再次使用-·-·-"<<endl;}}程序设计总结文件移位解密:1.运行程序后,如图示:2.输入文件名(此程序附带文件默认为(un)code.txt),如图示:3.输入密码,如图示:4.选择解密,如图示:文件移位加密1.运行程序后,如图示:2.输入文件名(此程序附带文件默认为(un)code.txt),如图示:3.输入密码,如图示:4.选择加密,如图示:个人总结正如早年瑞士联邦技术学院沃思博士所提出的那个著名的公式:“程序=算法+数据结构”,我在本次程序设计中深刻的体会到了算法的重要性。
一、实验目的1. 了解文件加密的基本原理和方法。
2. 掌握使用加密软件进行文件加密的操作流程。
3. 提高对数据安全保护的认识,增强实际操作能力。
二、实验环境1. 操作系统:Windows 102. 加密软件:TrueCrypt3. 实验设备:个人电脑三、实验原理文件加密是指通过特定的算法将原始文件转换成难以识别和解读的密文,只有拥有正确密钥的用户才能将密文恢复成原始文件。
本实验采用TrueCrypt加密软件,该软件使用AES-256位加密算法,具有较高的安全性。
四、实验过程1. 创建加密容器(1)启动TrueCrypt软件,选择“创建容器”选项。
(2)选择加密容器类型(如:标准容器、隐藏容器等)。
(3)设置加密容器的文件名和路径。
(4)选择加密算法(如:AES-256位)。
(5)设置加密容器的密码,并确认。
(6)选择加密容器的体积(可自定义)。
(7)开始创建加密容器。
2. 加密文件(1)将需要加密的文件复制到加密容器中。
(2)双击加密容器,输入密码进入。
(3)将需要加密的文件拖拽到加密容器内部。
(4)选择加密容器,点击“系统工具”下的“压缩文件”。
(5)选择压缩格式(如:7z)。
(6)设置压缩文件名和路径。
(7)开始压缩加密文件。
3. 解密文件(1)打开加密容器,输入密码进入。
(2)双击压缩文件,选择解压路径。
(3)设置解压格式(如:7z)。
(4)开始解压文件。
(5)解压完成后,在指定路径下找到解密后的文件。
五、实验结果通过本次实验,成功掌握了使用TrueCrypt软件进行文件加密和解密的方法。
实验过程中,加密文件和密钥均未丢失,加密效果良好。
六、实验总结1. 加密技术在现代信息安全中具有重要作用,能够有效保护用户数据安全。
2. TrueCrypt加密软件具有较高的安全性,使用方便,适合个人和企业使用。
3. 在实际操作中,应严格按照操作流程进行文件加密和解密,确保数据安全。
4. 针对重要数据,建议定期更换密码,以增强安全性。
实验3-移位密码分析实验班级:信息安全一、实验原理一篇包含字符的英文文章,其各ASCII码字符出现,都有一定的频率,出现较高频率的两个字符是 ' ' (空格) 和 'e',而且它们的ASCII码分别是32和101,差值是69。
既然凯撒密码利用的是单表替换的一种简单加密算法,所以,我们的主角, ' ' 和 'e' ,在解密后,依然会保持相同的ASCII码差值,69。
|c1 - c2| = |'e' - ' '| = |101 - 32| = 69|m1 - m2| = | ((c1 + k) mod 256)-((c2 + k) mod 256)| = |c1 - c2| = |'e' - ' '| = 69现在可以得到破解凯撒密码的原理了,我们统计一片经过凯撒加密的密文字符信息,在出现频率较高的字符里面寻找差值是69的2个字符,这两个必定是 ' ' 和 'e' 字符的加密字符,计算偏移量(既密钥key),通过解密运算,还原出明文。
二、程序设计流程说明:源代码:#include<stdio.h>void analyze(char *c);void decypher(char *c,char *hashmap,int a,int b,int d);void createHash(char *c,int a,int b,int d);char alphabet[]="abcdefghijklmnopqrstuvwxyz,.!";int main(){char ch1[10000];char hash[29];printf("Input paragragh:\n");gets(ch1);analyze(ch1);printf("\nAfter decyphered:\n");createHash(hash,7,3,29);decypher(ch1,hash,7,3,29);printf("\n%s\n",ch1);return 1;}void analyze(char *c) //统计字母出现{int a[26]={0};int i=0,j;while(c[i]!='\0'){if(c[i]!='.'||c[i]!='!'||c[i]!=',')a[c[i]-'a']++;printf("%d\t",i++);}for(j=0;j<26;j++){printf("%c:%d\n",j+'a',a[j]);}}void decypher(char *c,char *hashmap,int a,int b,int d) //通过密文直接hash 到明文,进行解密{int i=0;int char_pos;//record the caractor's positionwhile(c[i]!='\0'){char_pos=c[i]-'a';//printf("char_pos:%d\n",char_pos);if(c[i]!=' '){printf("%c",hashmap[char_pos]);}else{printf(" ");}i++;}}void createHash(char *c,int a,int b,int d) //由于f(p)是满足双射关系的,即两两对应,可以将明暗文对应关系放在Hash表中{int i;char encode[29];for(i=0;i<29;i++){encode[i]=alphabet[(a*i+b)%d];printf("%c",encode[i]);}for(i=0;i<29;i++){c[encode[i]-'a']=alphabet[i];}printf("\n%s\n",alphabet);}三、实验过程1.输入密文2.统计字符,得出结果结果:密文xultpaajcxitltlxaarpjhtiwtgxktghidhipxciwtvgtpilpitghlxiwiwtxgqadds 所对应的明文为ifweallunitewewillcausetheriverstostainthegreatwaterswiththeirblood。
实验报告姓名: 2222 学号: 022222 班级:2222全日期: 222221 古典密码(移位密码)一、实验环境1.硬件配置:处理器:Corei5 M 450@2.40GHZ,内存2GB,主硬盘320G2.使用软件:(1)操作系统:win7(2)软件工具:Microsoft Visual C++6.0二、实验设计的相关概念或基本原理1.移位密码的基本思想:移位密码算法 c=m+k(mod 26),k可以使0<k<26的任意整数。
三、实验内容根据实验原理的介绍,分别选取密钥的不同取值,创建一个明文信息,编写实现程序,实现加密和解密操作。
实验流程图:四、实验总结分析关键代码1.加密算法:int encrepty( )//加密{ length=strlen(source);for(i=0; i<length; i++){if(source[i]>96&&source[i]<123)source[i] = (source[i]+key-97)%26+65;}cout<<source;return 1;}就是先把输入的字母转换为数字,然后利用公式c=m+k(mod 26)来求解得出密文。
2.解密算法:int deciphring( )//解密{ length=strlen(cipher);for(i=0; i<length; i++){if(cipher[i]>64&&cipher[i]<91)cipher[i] = (cipher[i]-key-65+26)%26+97;}cout<<cipher; return 1;}实验结果显示如下图:3.小结移位密码的原理非常简单,由于密钥空间极小,通过穷举法攻击,容易破解使用该算法加密的密文。
作为古典密码,该算法思想仍然是值得我们学习的,我们可以将之融入到现代密码的相关领域中.在编程的过程中,遇到的困惑是直接输入2进行解密时,出现无法执行下一步的情况,经过仔细调试,发现是设计思路有点小问题,解密函数模块未独立出来,而是依赖加密输入的密钥,经过将密钥设成全局变量后,实验结果符合预期结果。
一、实验目的1. 理解移位加密的基本原理和方法。
2. 掌握使用C语言实现移位加密和解密的过程。
3. 通过实验加深对古典密码体系的理解,提高编程能力。
二、实验环境1. 操作系统:Windows或Linux2. 编译器:gcc(Linux)、VC(Windows)3. 编程语言:C语言三、实验原理移位加密,又称为凯撒密码,是一种简单的替换密码。
其原理是将明文中的每个字母按照一定的规则进行位移,形成密文。
位移的位数由密钥决定。
常见的移位加密方式有左移加密和右移加密。
- 左移加密:将明文中的每个字母向左移动k位(k为密钥),若超过字母表范围,则从字母表末尾循环回到开头。
- 右移加密:将明文中的每个字母向右移动k位(k为密钥),若超过字母表范围,则从字母表开头循环回到末尾。
四、实验步骤1. 创建一个函数实现左移加密。
2. 创建一个函数实现右移加密。
3. 创建一个函数实现加密和解密过程。
4. 编写主函数,实现用户输入明文、密钥和选择加密方式,输出密文和解密结果。
五、实验代码```c#include <stdio.h>#include <string.h>#define ALPHABET_SIZE 26// 将字母转换为对应的数字int char_to_num(char c) {return c - 'A';}// 将数字转换为对应的字母char num_to_char(int n) {return 'A' + n;}// 左移加密void left_shift_encrypt(char text, int key) {int i;for (i = 0; text[i] != '\0'; i++) {if (text[i] >= 'A' && text[i] <= 'Z') {text[i] = num_to_char((char_to_num(text[i]) + key) % ALPHABET_SIZE);} else if (text[i] >= 'a' && text[i] <= 'z') {text[i] = num_to_char((char_to_num(text[i]) + key) % ALPHABET_SIZE) + 'a' - 'A';}}}// 右移加密void right_shift_encrypt(char text, int key) {int i;for (i = 0; text[i] != '\0'; i++) {if (text[i] >= 'A' && text[i] <= 'Z') {text[i] = num_to_char((char_to_num(text[i]) - key + ALPHABET_SIZE) % ALPHABET_SIZE);} else if (text[i] >= 'a' && text[i] <= 'z') {text[i] = num_to_char((char_to_num(text[i]) - key + ALPHABET_SIZE) % ALPHABET_SIZE) + 'a' - 'A';}}}// 加密和解密void encrypt_decrypt(char text, int key, int mode) {if (mode == 1) {left_shift_encrypt(text, key);} else {right_shift_encrypt(text, key);}}int main() {char text[100];int key, mode;printf("请输入明文:");scanf("%s", text);printf("请输入密钥(0-25):");scanf("%d", &key);printf("请选择加密方式(1-左移加密,2-右移加密):");scanf("%d", &mode);encrypt_decrypt(text, key, mode);printf("加密后的密文:%s\n", text);encrypt_decrypt(text, key, mode);printf("解密后的明文:%s\n", text);return 0;}```六、实验结果与分析1. 当输入明文“HELLO WORLD”,密钥“3”,选择左移加密时,输出密文“KHOOR ZRUOG”。
实验报告---文件的加密与解密一、问题重述基于对各种加密算法的理解,结合各种加密、解密算法,选择合适的加密方法分别对文件进行加密和解密。
二、实验目的及要求2.1 实验目的1)在Linux环境下编写C语言程序,实现文件加密与解密;2)通过此次实验了解通信过程中不同的加密方式;3)了解不同的加密算法及加密过程;4)从多种加密和解密方式出发,对加密和解密的知识进行扩展。
2.2 实验要求根据不同的加密算法,设计加密程序,完成对文件的加密和解密。
2.3实验环境操作系统:Linux操作系统、window10操作系统;C语言环境: vim编辑器、DEV C++编辑器。
硬件环境:机房内电脑及个人笔记本电脑。
三、总体设计及思路3.1 实验思路对于文件的加密和解密主要采用ASCII与十进制数字之间相互转换的方法。
1)准备部分新建三个文件,分别命名为file1、file2、file3,其中file1装有源数据;将对file1加密后的信息放入file2中;对file2进行解密,解密生成的信息放入file3中。
2)计算部分当进入加密模式,首先对文件file1、file2进行读取操作,在保证成功读取文件的前提下,采用十进制转ASCII码的方法对文件file1进行加密,且加密后的数据保存在file2中,即文件file2是文件file1的加密文件。
采用ASCII码转十进制的方法对文件file2进行解密,解密后的数据放入file3中,即file3是file2的源文件。
四、实验过程4.1.1文件的读取顾名思义文件的加密和解密是以文件作为依托的,所以我们首先需要新建两个文件,文件1存放原始数据,其名字定义为file1.text;对文件1进行加密后需要将加密后的数据存放至文件2中,此处将文件2命名为file2.txt,最后将利用fopen函数以读取的方式打开文件,文件读取代码如下:4.1.2 文件的加密文件的加密过程采用十进制转三位ASCII码的加密方式,对从文件1中读取的字符依次进行ASCII码的转换,此段代码如下:4.1.3 文件的解密文件的解密过程采用与加密过程相反的操作,在linux下新建一个文件“file3.txt”,对加密后保存到文件2内的数据字符进形读取,将其转化为十进制,再将解密后的结果保存到file3中。
移位运算实验实验报告移位运算实验实验报告引言移位运算是计算机中常用的操作之一,通过对二进制数进行左移或右移来改变数值的位数和位置。
本实验旨在通过实际操作和观察,深入理解移位运算的原理和应用。
实验目的1. 掌握移位运算的基本原理和操作方法;2. 了解移位运算在计算机中的应用;3. 分析移位运算对数值的影响。
实验器材和材料1. 计算机;2. 编程软件(如C++、Python等)。
实验步骤1. 准备工作:打开编程软件,创建一个新的程序文件;2. 定义变量:在程序中定义一个整数变量,并赋予一个初始值;3. 左移运算:使用左移运算符(<<)对变量进行左移操作,观察结果;4. 右移运算:使用右移运算符(>>)对变量进行右移操作,观察结果;5. 输出结果:将移位运算后的结果输出到屏幕上;6. 分析结果:根据实验结果,总结移位运算对数值的影响。
实验结果与分析在实验中,我们选择了一个整数变量x,并赋予初始值为10。
通过左移和右移运算符对x进行操作,得到以下结果:1. 左移运算:- 将x左移1位(x << 1):结果为20;- 将x左移2位(x << 2):结果为40;- 将x左移3位(x << 3):结果为80。
通过观察可以发现,每次左移操作都将x的二进制表示向左移动指定的位数,相当于将x乘以2的移位次数次方。
例如,将x左移1位相当于将x乘以2,将x左移2位相当于将x乘以4。
2. 右移运算:- 将x右移1位(x >> 1):结果为5;- 将x右移2位(x >> 2):结果为2;- 将x右移3位(x >> 3):结果为1。
通过观察可以发现,每次右移操作都将x的二进制表示向右移动指定的位数,相当于将x除以2的移位次数次方。
例如,将x右移1位相当于将x除以2,将x右移2位相当于将x除以4。
结论通过本次实验,我们对移位运算有了更深入的理解。
文件的移位加密与解密
一目的
将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反,使文件恢复原来的字母。
二需求分析
将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
加密:用户选择功能(运行后键盘输入1进行选择),从键盘输入一个任意整数密钥,然后对已知文件“abc.txt”进行加密。
加密后屏幕显示加密后文件内容并且文件内容改变。
成为加密文件。
解密:通过选择功能(运行后键盘输入2进行选择)对加密后的文件进行解密,输入密钥后能显示出解密后文件内容并且文件变为解密的文件。
通过加密解密可以在文件内容与乱码之间来回转换,使文件内容更安全。
在D盘中建立abc.txt文件并在其中输入字符串abcdef,运行程序,选择1对文件进行加密,输入密钥1,文件abc.txt会变为bcdefg。
三概要设计
本程序有一个模块:
main()
{
定义整数选择,密钥;
定义字符型数组保存源文件的内容,保存改变后文件的内容;
定义i=0,用来初始化数组;
定义文件指针1,2 第一个只读打开文件,第二个只写打开文件把更改后的文件放入已知文件中。
没有其他函数。
}
四详细设计
主程序流程图
定义最大数组,以及所使用的函数的头文件名
#include<stdio.h>
#define M 200
#include<stdlib.h>
文件指针,以及全局变量
int password,choose;
char c,yuan[M];
int i=0;
FILE *fp,*fp1;
对文件的打开,并对所需功能进行选择。
fp=fopen("D:\\abc.txt","r");
if(fp==NULL)
printf("the document can't be open!\n");
printf("please choose the function\n");
printf("1:encrypt 2:decript \n");
scanf("%d",&choose);
if(choose!=1&&choose!=2)
printf("please input a right number!\n");
system("pause");
对文件进行加密或者解密处理,并把处理结果输出在屏幕上。
while((c=fgetc(fp))!=EOF)
{
if(c>='a' && c<='z')
yuan[i]=(c - 'a' + password) % 26 +'a';
else
yuan[i]=(c - 'A' + password) % 26 +'A';
i++;
}
yuan[i]='\0';
printf("%s\n",yuan);
fclose(fp);
以只写方式再次打开文件,并把加密或解密后的内容输入文件。
fclose(fp);
fp1=fopen("D:\\abc.txt","w");
fputs(yuan,fp1);
fclose(fp1);
system("pause");
五调试分析
1.测试时应先在D盘建立一个名为”abc.txt”的文件。
在文件内输如内容例如“jiangqi”,运行程序选择1进行加密,密钥输入1则文件加密后输出kjbohrj。
且文件
内部变为加密后内容,再次运行程序,选择2进行解密文件恢复jiangqi。
若进入时选择的不是1或者2则程序提示“输入正确的数字”然后跳出。
2.通过对其他内容以及密钥的测试,运行结果均能满足需求。
六测试结果
加密:
测试前的未加密文件
对程序的运行
运行后的程序
解密:
解密前
运行程序
运行后的记事本
若选择其他按键
七用户使用说明
程序是用C语言编写的,在使用时一定要在D盘建立一个abc.txt的文件,在文件里输入内容,在运行程序并且进行选择功能是,因为choose变量是int型的,所以一定要输入一个阿拉伯数字程序才能正确运行。
通过提示用户能更好使用。
1是加密,2是解密。
八课程设计总结
通过本次课程设计,复习巩固了C语言所学的内容,对文件的打开,写入以及读取文件的内容有了深刻的理解。
对变量的定义有了深刻的理解,通过和同学的讨论了解了修改文件可以使用修改指针位置的方法。
通过对选择功能的设置编写了解了程序是面向他所使用的人的,所以要做到足够的人性化。
通过本次课程设计综合了C语言各章的内容,对自己是一个锻炼的过程。
但是不足的是本次的设计没有使用函数编写这个是一个缺点,并且没有使用其他的指针,以后要加强这方面的练习。