对称密码基本加密实验汇总

对称密码基本加密实验【实验环境】ISES客户端Microsoft CLR Debugger 2005或其它调试器【实验步骤】一、DES在加密算法选项里选择DES,以下实验步骤保持算法不变。

(一)加解密计算(1)加密在明文栏的下拉菜单里选择文本或十六进制,然后在后面相应的文本框内输入所要加密的明文;在密钥栏的下拉菜单里选择文本或十六进制,然后在后面相应的文本框内输入相应的密钥;点击“加密”按钮,在密文文本框内就会出现加密后的密文,如图1.1.4-5所示。

图1.1.4-5(2)解密在密文栏相应的文本框内输入所要解密的密文;在密钥栏的下拉菜单里选择文本或十六进制,然后在后面相应的文本框内输入相应的密钥;点击“解密”按钮,在明文文本框内就会出现解密后的明文。

(二)分步演示(1)点击“扩展实验”框中的“DES分步演示”按钮,进入DES分步演示窗口,打开后默认进入分步演示页面。

(2)密钥生成在“子密钥产生过程”框中,选择密钥的输入形式后,输入密钥;DES要求密钥长度为64位,即选择“ASCII”(输入形式为ASCII码)时应输入8个字符,选择“HEX”(输入形式为十六进制)时应输入16个十六进制码;点击“比特流”按钮生成输入密钥的比特流;点击“等分密钥”按钮,将生成的密钥比特流进行置换选择后,等分为28位的C0和D0两部分;分别点击两侧的“循环左移”按钮,对C0和D0分别进行循环左移操作(具体的循环左移的移位数与轮序有关,此处演示为第一轮,循环左移1位),生成同样为28位的C1和D1;点击“密钥选取”按钮,对C1和D1进行置换选择,选取48位的轮密钥,此处生成第一轮的密钥K1。

上述密钥生成过程如图1.1.4-6所示。

图1.1.4-6(3)加密过程在“加密过程”框中,选择明文的输入形式后,输入明文;DES要求明文分组长度为64位,输入要求参照密钥输入步骤;点击“比特流”按钮生成输入的明文分组的比特流;点击“初始置换IP”对明文比特流进行初始置换,并等分为32位左右两部分L0和R0;点击“扩展置换E”按钮对32位R0进行扩展置换,将其扩展到48位;点击“异或计算”按钮,将得到的扩展结果与轮密钥K1进行异或,得到48位异或结果;分别点击“S1”、“S2”、…、“S8”按钮,将得到的48位异或结果通过S代换产生32位输出;点击“异或计算”按钮,将得到的32位输出与L0进行异或,得到R1;同时令L1=R1,进入下一轮加密计算。

上述加密过程如图1.1.4-7所示。

依次进行16轮计算,最终得到L16和R16;点击“终结置换”按钮,对交换后的L16和R16进行初始逆置换IP-1,即可得到密文。

上述加密过程如图1.1.4-8所示。

图1.1.4-7图1.1.4-8(三)D ES实例(1)点击DES分步演示窗体中的“DES实例”标签,进入DES实例演示页面。

(2)加密实例输入明文、初始化向量和密钥,选择工作模式和填充模式,点击“加密”按钮,对输入的明文使用DES算法按照选定的工作模式和填充模式进行加密;在轮密钥显示框内以十六进制显示各轮加密使用的密钥,加密结果以两种形式显示在密文框中。

上述过程如图1.1.4-9所示。

图1.1.4-9(3)解密实例输入密文、密钥和初始化向量,选择工作模式和填充模式,点击“解密”按钮,对输入的密文使用DES算法按照选定的工作模式和填充模式进行解密;在轮密钥显示框内以十六进制显示各轮加密使用的密钥,解密结果以两种形式显示在明文框中。

(四)D ES扩展实验(1)点击“扩展实验”框中的“DES扩展实验”按钮,进入DES扩展实验窗口,打开后默认进入扩展实验主页面,进行加解密。

(2)确保在主窗口中选中了“加密”按钮,将DES的工作模式设置为“加密运算”。

(3)文本框内输入待加密16个字节长的明文ASCII码串(64比特),16个字节长的密钥ASCII码串(64比特),点击“运行”按钮,得到DES的加密结果,如图1.1.4-10所示。

图1.1.4-10(4)观察“初始置换”(初始置换IP)。

在主窗口中点击“初始置换”按钮,进入“首置换”卡片,再次点击“运行”,即可观察明文的初始变换过程,如图1.1.4-11所示。

可以根据需要,调节变换显示的速度。

图1.1.4-11(5)观察密钥变换。

在主窗口中点击“密码表”按钮,打开密码变换卡片组。

①选择“密码表”卡片,观察16轮加密变换的密钥,如图1.1.4-12所示。

图1.1.4-12②选择“密码盒”卡片,观察16轮加密变换密钥的生成过程。

点击“置换选择1”按钮,得到该密钥的初始变换,选择想要测试加密密钥的轮次,再点击“置换选择2”按钮,即可得到相应的加密密钥,如图1.1.4-13所示。

图1.1.4-13(6)观察加密函数。

点击主窗口的“F(Ri,Ki+1)”按钮,进入加密函数变换卡片。

①依次顺序点击“F(Ri,Ri+1)”卡片中的各个按钮,可以得到“选择运算E”、“代替函数组S”和“置换运算P”的运算结果,如图1.1.4-14所示。

图1.1.4-14②选择“F(Ri,Ri+1)”卡片右下角的“Ebox”、“Sbox”或“Pbox”,并点击“查看”按钮,可以详细观察相应的变换过程,如图1.1.4-15所示。

图1.1.4-15(7)观察“末置换”(逆初始变换IP-1)。

在主窗口中点击“末置换”按钮,进入“末置换”卡片,再次点击“运行”,即可观察加密过程的末置换(逆初始变换IP-1)的执行过程,如图1.1.4-16所示。

只有当主窗口中循环轮次等于16时,“末置换”按钮才变为有效的,否则无法激活该窗口。

图1.1.4-16(8)解密时,确保在主窗口中选中了“解密”按钮,将DES的工作模式设置为“解密运算”。

文本框内输入待解密16个字节长的密文ASCII码串(64比特),16个字节长的密钥ASCII码串(64比特),点击“运行”按钮,得到DES的解密结果,如图1.1.4-17所示。

解密运算的其他过程与加密过程一样,不再赘述。

图1.1.4-17(五)算法跟踪选择DES算法,在算法计算的相应区域输入明/密文和密钥;点击“跟踪加密”/“跟踪解密”按钮,进入调试器,选择对应的算法函数进行算法跟踪;跟踪完成后会自动返回实验界面显示计算结果;切换回调试器,停止调试,关闭调试器,不保存工程。

具体步骤可参照古典密码实验中实验步骤二。

二、3DES在加密算法选项里选择3DES,以下实验步骤保持算法不变。

(一)加解密计算选择明/密文和密钥的格式,输入明/密文和密钥;点击“加密”/“解密”按钮,进行加/解密计算;查看计算结果。

具体步骤可参照DES的加解密计算的实验步骤。

(二)查看轮密钥(1)点击“扩展实验”框中的“查看轮密钥”按钮,进入查看轮密钥窗体。

(2)输入明文、初始化向量和密钥,密钥长度为128位或192位,对应于原理中的两种情况,此处以输入128位密钥为例;选择工作模式和填充模式,点击“加密”按钮,使用3DES算法按照选定的工作模式和填充模式进行加密;在“密钥”框中查看各轮的密钥,在“密文”框中查看生成的密文。

具体如图1.1.4-18所示。

图1.1.4-18(三)扩展实验(1)点击扩展实验下的“3DES扩展实验”按钮,进入3DES扩展实验主窗体,如图1.1.4-19所示。

图1.1.4-19(2)点击主窗体内最左边的“3DES密码”按钮,进入3DES加解密实验。

分别在“明文ACSII码串”、“密钥K1的ASCII码串”中输入16个十六进制的数值,点击左上角的“DES”按钮,在“一重DES密文ASCII码串”中就会显示出加密的密文ASCII码串值。

同样在“密钥K2的ASCII码串”中输入16个十六进制的数值(最好与K1不同),点击上排中间的“DES-1”按钮,在“二重DES密文ASCII码串”中就会显示出加密的密文ASCII码串值,如图1.1.4-20所示。

图1.1.4-20(3)在“密钥K3的ASCII码串”中输入16个十六进制的数值,点击右上角“DES”按钮,在“密文ASCII码串”中就会显示出3DES加密的密文ASCII码串值,如图1.1.4-21所示。

图1.1.4-21(4)3DES的解密过程是其加密过程的逆过程。

接着上面的实验步骤,依次从右到左,顺序点击3DES加解密卡片下排中的按钮“DES-1”、“DES”和“DES-1”,分别得到“二重DES明文ASCII码串”、“一重DES明文ASCII码串”和“明文ASCII码串”,如图1.1.4-22所示。

图1.1.4-22(四)算法跟踪选择3DES算法,在算法计算的相应区域输入明/密文和密钥;点击“跟踪加密”/“跟踪解密”按钮,进入调试器,选择对应的算法函数进行算法跟踪;跟踪完成后会自动返回实验界面显示计算结果;切换回调试器,停止调试,关闭调试器,不保存工程。

具体步骤可参照古典密码实验中实验步骤二。

三、IDEA在加密算法选项里选择IDEA,以下实验步骤保持算法不变。

(一)加解密计算选择明/密文和密钥的格式,输入明/密文和密钥;点击“加密”/“解密”按钮,进行加/解密计算;查看计算结果。

具体步骤可参照DES的加解密计算的实验步骤。

(二)扩展实验(1)点击“扩展实验”框中的“IDEA扩展实验”按钮,进入IDEA扩展实验窗口,打开后默认进入扩展实验主页面。

(2)在主窗口中的“明文”文本框中输入16个十六进制的数值串,在“密钥”文本框中输入32个十六进制的数值串,点击“加密”按钮,如图1.1.4-23所示。

图1.1.4-23(3)观察密码生成过程。

在主窗口中点击“密码表”按钮,进入密码表的生成过程。

点击“运行”后,再点击“上”、“下”、“左”或“右”箭头,分别得到相应轮次的密码变换结果,如图1.1.4-24所示。

图1.1.4-24(4)观察轮变换过程。

点击轮变换中的“左”或“右”箭头,观察该轮加密的结果;也可以直接在轮次文本框中输入一个1-9之间的数值,点击“循环”按钮;具体如图1.1.4-25所示。

图1.1.4-25(5)观察输出变换过程。

当轮变换的轮次到9时,即进入了IDEA密码的最后一轮输出变换,得到最后的加密运算结果;具体如图1.1.4-26所示。

图1.1.4-26(6)运算器工具。

在主窗口中点击“运算器”,即进入运算器工具窗口;用户可在其中输入十六进制的数据进行IDEA中的一些典型运算,如“16位按位异或+”、“16位整数作模216+1相乘⊙”或“16位整数作模216相加+”运算;具体如图1.1.4-27所示。

图1.1.4-27(7)在主窗口中的“密文”文本框中输入16个十六进制的数值串,在“密钥”文本框中输入32个十六进制的数值串,点击“解密”按钮,即可进行解密操作;IDEA解密扩展实验的其他过程与加密类似,不再赘述。

合集下载

计算机 密码学 实验二:对称密码算法DES

计算机 密码学 实验二:对称密码算法DES

实验二:对称密码算法DES 安全0901 王宇航 09283020实验报告实验目的:1. 掌握DES算法的基本原理2. 掌握DES算法输入输出格式3. 掌握DES算法的密钥格式4. 掌握DES算法加解密过程实验原理:信息加密根据所采用的密钥类型可分为对称密码算法和非对称密码算法。

对称密码算法是指加密密钥和解密密钥相同,或者虽然不同,但是可以从其中任意一个推导出另一个。

在对称密码发展历史上,曾经出现过很多优秀的算法,包括DES,3des,AES等,本部分我们以des,AES,SMS4为例介绍对称密码算法的实现机制。

1、数据加密标准(DES)简介1973年,美国国家标准局(NBS)在认识到建立数据保护标准既明显又急迫需要的情况下,开始征集联邦数据加密标准的方案。

1975年3月17日,NBS公布了IBM公司提供的密码算法,以标准建议的形式在全国范围内征求意见。

经过两年多的公开讨论之后,1977年7月15日,NBS宣布接受这个建议,作为联邦信息处理标准46号,数据加密标准(Data Encryption Standard),即DES正式颁布,供商业界和非国防性政府部门使用。

DES是将二进制序列的明文分成每64bit一组,用长为64bit的密钥对其进行16轮代换和换位加密,最后形成密文。

DES的巧妙之处在于,除了密钥输入顺序之外,其加密和解密的步骤完全相同,这就使得在制作DES芯片时,易于做到标准化和通用化,这一点尤其适合现代通信的需要。

在DES出现以后,经过许多专家学者的分析论证,证明它是一种性能良好的数据加密算法,不仅随机特性好,线性复杂度高,而且易于实现,加上能够标准化和通用化,因此,DES在国际得到了广泛的应用。

DES是一种对称密码体制,它所使用的加密和解密密钥是相同的,是一种典型的按分组方式工作的密码。

其基本思想是将二进制序列的明文分成每64bit 一组,用长为64bit的密钥对其进行16轮代换和换位加密,最后形成密文。

des加密算法实验报告

des加密算法实验报告

DES加密算法实验报告1. 引言DES(Data Encryption Standard)是一种对称密码算法,于1977年被美国联邦信息处理标准(FIPS)确定为联邦标准。

DES加密算法采用分组密码的思想,将明文按照64位分为一组,经过一系列的置换、替代和迭代操作,最终输出加密后的密文。

本实验旨在通过对DES加密算法的实际操作,深入理解DES的工作原理和加密过程。

2. 实验步骤2.1. 密钥生成DES加密算法的核心在于密钥的生成。

密钥生成过程如下:1.将64位的初始密钥根据置换表进行置换,生成56位密钥。

2.将56位密钥分为两个28位的子密钥。

3.对两个子密钥进行循环左移操作,得到循环左移后的子密钥。

4.将两个循环左移后的子密钥合并,并根据压缩置换表生成48位的轮密钥。

2.2. 加密过程加密过程如下:1.将64位的明文按照初始置换表进行置换,得到置换后的明文。

2.将置换后的明文分为左右两部分L0和R0,每部分32位。

3.进行16轮迭代操作,每轮操作包括以下步骤:–将R(i-1)作为输入,经过扩展置换表扩展为48位。

–将扩展后的48位数据与轮密钥Ki进行异或操作。

–将异或结果按照S盒进行替代操作,得到替代后的32位数据。

–对替代后的32位数据进行置换,得到置换后的32位数据。

–将置换后的32位数据与L(i-1)进行异或操作,得到Ri。

–将R(i-1)赋值给L(i)。

4.将最后一轮迭代后得到的数据合并为64位数据。

5.对合并后的64位数据进行逆置换,得到加密后的64位密文。

3. 实验结果对于给定的明文和密钥,进行DES加密实验,得到加密后的密文如下:明文:0x0123456789ABCDEF 密钥:0x133457799BBCDFF1密文:0x85E813540F0AB4054. 结论本实验通过对DES加密算法的实际操作,深入理解了DES加密算法的工作原理和加密过程。

DES加密算法通过对明文的置换、替代和迭代操作,混淆了明文的结构,使得密文的产生与密钥相关。

【免费阅读】网络安全对称密钥加密实验

【免费阅读】网络安全对称密钥加密实验

解密计算继续全心全意受到生活部的细心 一人员的组织和选搞好生活部这一年之中的创新意识的部委成员。

基于这活部选拔优秀的成员,组成一只本工作的开展 每年学生活,在生活,安全,卫生等诸多方面学学习不适,寝室的清洁卫生做不好,对学欺骗迷惑等等,于此,在新生入校报名作好接待门举办专门针对大一生的综合知识讲座。

在适当时一新生尽快溶入到大学活之中。

生活部要继续作好学之间的关系广泛收集同学们学校饮食,安全方面的相关意见如个别食堂就餐难问题,基于此们决定开展“自觉回收餐具”活,同时积极于食堂方面沟通,提高其作效率,从而解决这一问题和寝室长,将其发展为生活部在各个班级重要“基层组织”,并定时开展寝室的全方位检查。

争取形成传统。

从整体提高我院学生之中找到家的感觉。

针对社会上专对学生的不法活动十分突,积极关注与我校学生有关的安全方面的信息,协助校相关部门现,及时将信息上报学校相关部门和老师,并及时传达我院学生的安全,保持我院一直以来的优良形象。

(2)配合院作为生活部在学生会工作的又一个重点工作,我部还要发扬上大局出发,结合生活部的特点和优势,积极协作其他兄弟部安全和后勤方面。

总之,希望经过我们一年的努力能够理念。

(本版块的具体活动内容主要依据学面 生活部作为一个幕后部门,一直以来都弟部门举办各类活动的时候的时候也大多是微不至的服务的时候,却不一定能想到弟部门开展一些由生活部主办的活广。

寝室作为同学们生寝室的卫生工作,搞好寝生活工作环境,促进全寝室风采大赛”。

关部门以及我生活密切和作,部耐,为我们要继续则,在全心全意学感受到生活部的细心: 一人员的组织和选。

要搞好生活部这一年之中的一定创新意识的部委成员。

基于这取为生活部选拔优秀的成员,组成一只本工作的开展 每年大学生活,在生活,安全,卫生等诸多方面学习不适应,寝室的清洁卫生做不好,对学惑等等,基于此,在新生入校报名作好接待门针对大一新生的综合知识讲座。

在适当时入到大学生活之中。

实验一 DES加密解密

实验一 DES加密解密

实验一 DES加密解密实验目的1、理解对称加密算法的原理和特点。

2、理解DES和AES算法的加密原理。

实验原理DES是一种分组加密算法,所谓分组加密算法就是对一定大小的明文或密文来做加密或解密动作。

而在DES这个加密系统中,每次加密或解密的分组大小均为64位,所以DES没有密文扩充的问题。

对大于64位的明文只要按每64位一组进行切割,而对小于64位的明文只要在后面补“0”即可。

另一方面,DES所用的加密或解密密钥也是64位大小,但因其中有8个位是用来作奇偶校验的,所以64位中真正起密钥作用的只有56位,密钥过短也是DES最大的缺点。

DES加密与解密所用的算法除了子密钥的顺序不同外,其他部分完全相同。

核心代码#include <stdlib.h>#include <stdio.h>#include <string.h>#define ENCRYPT 1#define DECRYPT 0static void printHex( char *cmd, int len );static void printArray( const char *In, int len );static void F_func(bool In[32], const bool Ki[48]); // f函数static void S_func(bool Out[32], const bool In[48]); // S盒代替static void Transform(bool *Out, bool *In, const char *Table, int len); // 变换static void Xor(bool *InA, const bool *InB, int len); // 异或static void RotateL(bool *In, int len, int loop); // 循环左移static void ByteToBit(bool *Out, const char *In, int bits); // 字节组转换成位组static void BitToByte(char *Out, const bool *In, int bits); // 位组转换成字节组// 16位子密钥static bool SubKey[16][48];// 64位经过PC1转换为56位(PC-1)const static char PC1_Table[56] ={};// 左移const static char LOOP_Table[16] ={};// 排列选择 2 (PC-2)const static char PC2_Table[48] ={};// Ri_1(32位)经过变换E后膨胀为48位(E) void F_func static const char E_Table[48] ={};// 8个4比特合并为32比特的排列Pconst static char P_Table[32] ={};// 经过S盒S-boxesconst static char S_Box[8][4][16] ={};// 初始排列(IP)const static char IP_Table[64] ={};// L16与R16合并后经过IP_1的最终排列(IP**-1)const static char IPR_Table[64] ={};void Des_SetKey(const char Key[8]); //生成子密钥void Des_Run(char Out[8], char In[8], bool Type); //DES算法void main(int argc, char *argv[]){char key[12]={1,2,3,4,5,6,7,8};char str[12]="Hello";char str2[12];//printArray( PC2_Table, sizeof(PC2_Table)/sizeof(PC2_Table[0]) );printf("Before encrypting: ");puts(str);Des_SetKey(key);memset(str2, 0, sizeof(str2));Des_Run(str2, str, ENCRYPT);printf("After encrypting: ");printHex( str2, 8 );memset(str, 0, sizeof(str));printf("After decrypting: ");Des_Run(str, str2, DECRYPT);puts(str);}实验分析DES采用传统的换位和置换的方法进行加密,在56b密钥的控制下,将64b明文块变换为64b密文块,加密过程包括16轮的加密迭代,每轮都采用一种乘积密码方式(代替和移位)。

网络安全实验——对称加密算法

网络安全实验——对称加密算法

网络专**-* *********** **** 2010-11-12《网络安全》实验指导书对称加密算法一、实验目的1、熟悉和掌握对称加密算法的原理及其一般过程;2、掌握对称加密算法的基本方法:替代(substitute)与置换(transposition);3、掌握使用一定的编码开发工具(对具体的开发平台和工具不作要求)。

二、实验内容1、替代加密法1)编程实现课本习题2.1的线形替代加密方法的破解(提示:可使用穷举法);(已知替代变换函数f(a)=ak mod 26,且9k mod 26=15,试计算k)2)破解后,实现该方法的加密运算(输入明文,输出密文)和解密运算(输入密文,输出明文)(解密运算提示:设密钥为k,密文为c,明文为m,则有m*k mod 26=c,因为m<26且唯一,同样可使用穷举法搜索出m);3)加密字符串“substitute”,输出密文;4)(可选) 推导解密密码本,即明文与密文字母的一一对应关系。

2、置换加密法1)给定置换表“86427531”,编程实现基于该表的加密运算;2)加密字符串“transposition”,输出密文(提示:如字符串长度不是8的倍数,则需在字符串结尾后填充空格,使得其总长度为8的倍数);3)参照课本表2-1和表2-8的关系,推导逆置换表,并编程实现相应的解密运算。

三、程序清单1、初始并定义程序所用的主要的参数bool found = false; //标记k是否被求出bool ff = false; //标记密码本是否被求出static int CodeBook[26]; //替代加密法的明文本static char CodeBookStr[26]; //替代解密法的密码本int trsp[8]={7,5,3,1,6,4,2,0}; //置换加密所用的数组int rev_trsp[8]={7,3,6,2,5,1,4,0}; //置换解密所用的数组static char c[26]; //由明文转的密文string cc; //输入的密文int k;string aa; //输入的明文2、替代加/解密算法1)计算kvoid _mod_k()//求出K{int i = 1;while (!found){if ( 9*i % 26 == 15 ){found = true;k = i;}i++;}cout<<" k = "<<k<<endl;}2)计算解密密码本void _find_ma()//求出解密密码本{if (!found){cout<<endl<<" not find k"<<endl;cout<<endl<<" 小提示:";cout<<"请先执行上层的步骤1求出k"<<endl;return;}ff = true;int i = 1;bool f = false;while (!f){if ( 15*i % 26 == 9 )f = true;i++;}int kd = i-1; //Des: x = y*kd mod 26cout<<endl<<" k = "<<k;cout<<" 1/k = "<<kd<<endl<<endl;int t;cout<<" 解密密码本为:";char c;for (i=0; i<26; i++){t = i*kd % 26;CodeBook[i] = t;c = i + 97;cout<<c<<" ";}cout<<endl<<" ";for (i=0; i<26; i++){t = i*kd % 26;CodeBook[i] = t;c = t + 97;cout<<c<<" ";CodeBookStr[i] = c;}cout<<endl;}3)替代加密算法void _subst(string aa,int len)//替代加密{int i;for (i=0; i<len; i++){if ( aa.at(i) >='1' || aa.at(i)<='9'){cout<<endl<<" 小提示:";cout<<"此加密法只能对字母进行加密!"<<endl;return;}}if (!found){cout<<endl<<" not find k"<<endl;cout<<endl<<" 小提示:";cout<<"请先执行上层的步骤1求出k"<<endl;return;}cout<<endl<<" 密码为:";for (i=0; i<len; i++){c[i] = aa.at(i) ;int m = c[i] - 97;m = m*k % 26; //Encryptm += 97;c[i] = m;cout<<c[i];}cout<<endl;}4)替代穷举解密算法void _oneto_one(int len)//穷举法解码{if (!found){cout<<endl<<" not find k"<<endl;cout<<endl<<" 小提示:";cout<<"请先执行上层的步骤1求出k"<<endl;return;}int i;for (i=0; i<len; i++){if ( cc.at(i) >='1' || cc.at(i)<='9'){cout<<endl<<" 小提示:";cout<<"此解密法只能对字母进行解密!"<<endl;return;}}cout<<endl<<" 明文为:";for (i=0; i<len; i++){c[i] = cc.at(i);int m = c[i] - 97;bool f = false;int a = 0;while (!f){if( m == a*k % 26 )f = true;a++;}a += 96; //97-1c[i] = a;cout<<c[i];}cout<<endl;}5)替代密码本解密算法void _ben(int len)//密码本解密{int i;for (i=0; i<len; i++){if ( cc.at(i) >='1' || cc.at(i)<='9'){cout<<endl<<" 小提示:";cout<<"此解密法只能对字母进行解密!"<<endl;return;}}if (!found){cout<<endl<<" not find k"<<endl;cout<<endl<<" 小提示:";cout<<"请先执行上层的步骤1求出k"<<endl;return;}if (!ff){cout<<endl<<" not find 密码本"<<endl;cout<<endl<<" 小提示:";cout<<"请先执行上层的步骤2求出密码本"<<endl;return;}cout<<endl<<" 明文为:";for (i=0; i<len; i++){int idx = cc.at(i) - 97;cout<<CodeBookStr[idx];}cout<<endl;}3、置换加/解密算法1)置换加密算法void _trans_a(string aa,int len)//置换加密{int l = 8 - len%8;string s = aa;while (l){s += " "; l--;}l = s.length()/8;cout<<endl<<" 密码为:";string s1, s2;int j,k,n;for(j=0; j<l; j++){s1 = s.substr(j*8,8);s2 = "";for(k=0; k<8; k++){n = trsp[k];s2 += s1.substr(n,1);}cout<<s2;}}2)置换解密算法void _trans_j(int len)//置换解密{if (len%8){cout<<endl<<" 小提示:";cout<<"请输入长度为8的倍数的字符串解密"<<endl;return;}cout<<endl<<" 明文为:";string s = cc;string s1, s2;int j,k,n,l=len/8;for(j=0; j<l; j++){s1 = s.substr(j*8,8);s2 = "";for(k=0; k<8; k++){n = rev_trsp[k];s2 += s1.substr(n,1);}cout<<s2;}}4、程序处理流程四、运行结果1、计算k2、计算替代解密密码本3、加密4、解密五、实验总结本实验,使我受益良多。

实验六 简单对称加密算法实验

实验六  简单对称加密算法实验

实验六简单对称加密算法实验
学院:年级:实训课程名称:电子商务技术基础姓名:
学号: 指导老师: 12月3日
一、实验目的
1)了解对称算法的基本工作流程
2)掌握对称算法的使用方法
二、实验环境(设备、仪器、网络):
(1)虚拟机
(2)加密工具
(3)Windows系统环境
三、实验内容(实验方案、实验步骤、测量数据及处理等) :
3.1实验方案
加密方和解密方利用RSA加密算法分别生成-对公钥和私钥,并告知对方自己的公钥。

将明文同样进行hash运算得出摘要,与验证签名后得出的摘要相比较,如果相同则可以证明明文没有被破坏或改变,同时也可使确定是加密方发送的信息。

3.2实验过程
加密方
(1)加密方通过RSA算法得出公钥(e,n)=(101,253),私钥(d,n) =(61,253);
(2)编辑明文为we are in xinjiang,andyou?
(3)在加密工具的环境中利用解密方的公钥对明文进行加密,如图3-3所示:
(4)在加密工具中利用MD5对明文进行hash运算,如图3- 4所示:
(5)用加密方的私钥对生成的摘要进行签名
(6)将签名与密文发送给解密方
四、实验总结
(1)使用RSA算法可以方便对密钥的管理使得密钥更加安全,实现了数据的机密性。

(2)解密方可以用加密方的公钥对签名进行验证,则可以确定消息是来自加密方,实现了数据的不可抵赖性;
(3)将验证签名得出的摘要与利用MD5对明文进行hash运算得出的摘要相符,可以确定明文没有被改变,实现了数据的完整。

实验报告模板-实验1 数据的加密和解密

三、实验步骤:
1、根据DES算法的实现原理给出DES算法实现的流程图
2、DES算法的实现
3、运行程序,验证DES算法作为对称加密算法的相关特性
四、实验结果与分析
五:思考题:
1.由于DES可能易于受到穷举式攻击,出现了双重DES和三重DES,请给出现有双重DES和三重DES的实现方案,试阐述双重DES存在的安全隐患。
南京晓庄学院 数学与信息技术学院
网络安全实验报告
实验名称:
实验一 数据的加密和解密
班级:
实验地点:
日期:
评定等级:
学号:姓名:一、实验目 Nhomakorabea:1.理解对称加密算法的原理和特点;
2.理解DES算法的机密和解密原理。
二、基本技能实验内容、要求和环境:
在充分理解和掌握DES算法实现原理的基础上,在windows操作系统环境下,采用自己熟悉的编程语言C/C++实现DES算法的加密和解密过程。调试和运行DES算法程序,验证对称密码技术的相关特性。

实验一 密码算法

实验一对称密码算法DES和公钥密码算法RSA
1.实验目的
(1)通过编程了解对称密码学的DES算法的加密和解密过程,加深对非对称密码算法的认识;
(2)通过运行RSA程序对实际数据进行加密和解密来深刻了解RSA的运行过程。

2.实验步骤
1.根据所提供的函数分析DES算法的实现过程;自己编写一段main程序调用函数实现DES对一组8Byte的数据的加密和解密过程。

2.利用RSA加密和解密的对话框程序RSATool,,运行这段程序加密一段文字,了解RSA 算法原理。

尝试加密一大段文字,记录程序的运行时间,使用DES程序加密相同的文件,比较两种算法加密的速度。

3.实现过程
1.DES算法的源代码;
运行结果(截图);
2.RSA 运行结果(截图)
4.实验小结
通过实习,我掌握了。

信息加密实验报告

一、实验目的 1. 理解信息加密的基本原理和重要性。 2. 掌握常用的对称加密算法(如DES、AES)和非对称加密算法(如RSA)。 3. 通过实验操作,加深对加密算法实际应用的理解。 4. 学习使用加密工具对数据进行加密和解密。 二、实验环境 1. 操作系统:Windows 10 2. 编程语言:Python 3. 加密库:PyCryptodome 4. 实验工具:OpenSSL 三、实验内容 1. 对称加密算法实验 (1)实验目的 了解对称加密算法的基本原理,掌握DES和AES加密算法的使用。 (2)实验步骤 1. 导入PyCryptodome库。 2. 设置密钥(Key)和初始化向量(IV)。 3. 使用DES或AES算法对数据进行加密和解密。 (3)实验结果 以AES算法为例,加密和解密过程如下: ```python from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad # 设置密钥和初始化向量 key = b'1234567890123456' iv = b'1234567890123456' # 创建AES加密对象 cipher = AES.new(key, AES.MODE_CBC, iv) # 加密数据 data = b'Hello, World!' padded_data = pad(data, AES.block_size) encrypted_data = cipher.encrypt(padded_data) # 解密数据 decrypted_data = cipher.decrypt(encrypted_data) decrypted_data = unpad(decrypted_data, AES.block_size) print("加密数据:", encrypted_data.hex()) print("解密数据:", decrypted_data.decode('utf-8')) ``` 2. 非对称加密算法实验 (1)实验目的 了解非对称加密算法的基本原理,掌握RSA加密算法的使用。 (2)实验步骤 1. 导入PyCryptodome库。 2. 生成RSA密钥对。 3. 使用公钥对数据进行加密,私钥对数据进行解密。 (3)实验结果 生成RSA密钥对并加密解密过程如下: ```python from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP # 生成RSA密钥对 key = RSA.generate(2048) private_key = key.export_key() public_key = key.publickey().export_key() # 加密数据 cipher = PKCS1_OAEP.new(RSA.import_key(public_key)) encrypted_data = cipher.encrypt(b'Hello, World!') # 解密数据 cipher = PKCS1_OAEP.new(RSA.import_key(private_key)) decrypted_data = cipher.decrypt(encrypted_data) print("加密数据:", encrypted_data.hex()) print("解密数据:", decrypted_data.decode('utf-8')) ``` 3. 实验总结 通过本次实验,我们了解了信息加密的基本原理和重要性,掌握了DES、AES和RSA等常用加密算法的使用。同时,我们还学会了使用Python编程语言和PyCryptodome库进行加密和解密操作。

最全对称加密----流密码总结到位

最全对称加密----流密码总结到位它是以最⼩单位⽐特作为⼀次加密、解密的操作元素,利⽤加密算法进⾏加密与解密。

流密码的基本思想是利⽤密钥 k 产⽣⼀个密钥流 z ,并利⽤相应的规则对明⽂串 x进⾏加密,所得到的密⽂为: y 。

 ⽽流密码与所谓的分组密码最⼤的差距除了对于明⽂的处理⽅式不同以外,还有其加密器中是否含有记忆元件,流密码的加密器中存在记忆元件,⽽分组密码不存在,也正是由于这个记忆元件,我们可以进⼀步将流密码分为同步流密码和⾃同步流密码。

同步流密码: 是不是听起来有点复杂,但其实它取决于加密器中记忆元件的存储状态,独⽴于明⽂字符的叫做同步流密码,否则叫做⾃同步流密码, 但其实对于⾃同步流密码来说,它的密钥流的产⽣与输⼊的明⽂有关, 所以在理论上我们很难能够去分析清楚。

⽽⽬前,我们在流密码⽅⾯的所有科研成果绝⼤多数都是关于同步流密码的。

 同步流密码的加密过程都与明⽂⽆关,故我们得到的密⽂也与明⽂直接联系。

所以,通常情况下我们将同步流密码的加密器分成密钥流产⽣器和加密变换器两个部分。

在下图所表⽰的就是流密码的加密和解密流程。

 我们输⼊明⽂x,利⽤密钥流⽣成器⽣成的密钥z,利⽤加密算法E对明⽂x进⾏加密。

可以得到密⽂y。

 反过来说,当我们已知密⽂y时,利⽤密钥z和解密算法D解析密⽂y,就可以得到明⽂x。

 同步流密码的加密算法E可以是各种各样的,但是我们必须保证变换是可逆的(也就是说通过明⽂利⽤加密算法可以得到密⽂,反过来利⽤密⽂和解密算法就可以得到明⽂)。

 实际使⽤的数字保密通信系统⼀般都是⼆元系统,所以说,在有限域 GF(2)上讨论的⼆元加法流密码是⽬前最为常⽤的流密码体制。

 其实通过这两幅图我们可以对⽐出来,在⼆元域中,⼆元加法流密码就是将我们的加密算法换成了所谓的⼆元域上的加法。

(相信学计算机的我们⼀定对这个不陌⽣吧!hhhh~)线性反馈移位寄存器LFSR: 线性反馈移位寄存器(LFSR):通常由移位寄存器和异或门逻辑组成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档