移位密码实验报告
实验一 古典密码—单表代换
![实验一 古典密码—单表代换](https://img.taocdn.com/s3/m/34705f721711cc7931b71674.png)
实验一古典密码—单表代换【实验目的】理解代换密码的基本思想理解移位密码、仿射密码等算法的原理掌握上述各个算法的输入输出格式和密钥格式掌握上述各个算法的加解密过程和实现方法【实验原理】代换密码体制的一般定义为M=C=K=Z26,其中M为明文空间、C为密文空间、K为密钥空间、Z26为26个整数(对应26个英文字母)组成的空间;要求26个字母与模26的剩余类集合{0,1,2,…,25}建立一一对应的关系。
一、移位密码移位密码的加密实现上就是将26个英文字母向后循环移动k位,其加解密可分别表示为:c=E k(m)=m+k(mod 26)m=D k(c)=c-k(mod 26)其中,m、c、k是满足0≤m,c,k≤25的整数。
二、乘法密码乘法密码是通过对字母等间隔抽取以获得密文,其加解密可分别表示如下:-1c=mk(mod 26)m=ck(mod26)其中,m、c、k是满足0≤m,c,k≤25,且gcd(k,26)=1的整数。
三、仿射密码仿射密码的加密是一个线性变换,将移位密码和乘法密码相结合,其加解密可分别表示为:C=E a,b(m)=am+b(mod 26)M=D a,b(C)=a-1(c-b)(mod 26)其中:a、b是密钥,是满足0≤a,b≤25和gcd(a,26)=1的整数,即a和26互素;a-1的逆元,即a•a-1≡1 mod 2【实验环境】ISES客户端Microsoft CLR Debugger 2005或其它调试器【实验内容】通过运算器工具实现移位密码、乘法密码、仿射密码对各个算法的加解密进行扩展实验和算法跟踪【实验步骤】此处以移位密码为例说明,乘法密码、仿射密码可参照完成。
一、加解密计算(一) 加密(1) 参照实验原理,在明文栏输入所要加密的明文,在密钥栏输入相应的密钥,如下图1.1-2所示。
图 1.1-2(2) 点击“加密”按钮,在密文文本框内就会出现加密后的密文,如图1.1-3所示。
文件的移位加密解密实验报告
![文件的移位加密解密实验报告](https://img.taocdn.com/s3/m/4f328149fe4733687e21aa31.png)
文件的移位加密与解密一目的将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反,使文件恢复原来的字母。
二需求分析将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
加密:用户选择功能(运行后键盘输入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");对文件进行加密或者解密处理,并把处理结果输出在屏幕上。
密码学实验报告
![密码学实验报告](https://img.taocdn.com/s3/m/73e2326f0b1c59eef8c7b4d9.png)
《—现代密码学—》实验指导书适用专业:计算机科学与技术江苏科技大学计算机科学学院2011年11 月实验一古典密码实验学时:2学时实验类型:验证实验要求:必修一、实验目的编程实现古典密码的加解密方法。
二、实验内容(1)移位密码的加密和解密函数。
(2)仿射密码的加密和解密函数。
(3)维吉尼亚密码的加密和解密函数。
三、实验原理、方法和手段(1)移位密码对于明文字符x ,加密密钥k ,加密方法为,1,2,,25y x k k =+= 解密方法为,1,2,,25x y k k =-= (2)仿射密码对于明文字符x ,加密密钥(,)a b ,加密方法为,gcd(,26)1,1,2,,25y ax b a b =+==解密方法为1()x a y b -=-(3)维吉尼亚密码选取密钥字Key ,将明文按照密钥字长度分组,将明文与密钥字对应字符相加并对26求余,即为密文字符。
i i i y x k =+解密过程为i i i x y k =-四、实验组织运行要求本实验采用集中授课形式,每个同学独立完成上述实验要求。
五、实验条件每人一台计算机独立完成实验,有如下条件:(1)硬件:微机;(2)软件:VC++6.0、VC++.Net 2005。
六、实验步骤(1)将各函数编写完成;(2)在主函数中调用各函数,实现加密和解密。
七、实验报告实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。
移位密码加密:#include<stdio.h>#define n 3 //移位位数void change(char string[]){int i;for(i=0;string[i]!='\0';i++){if(string[i]>='a'&&string[i]<='z')string[i]=(string[i]+n>='z'?string[i]+n-26:string[i]+n); }}void main(){char str[100];printf("请输入一段明文");gets(str);change(str);printf("密文为:\n");puts(str);}移位密码解密:#include<stdio.h>#define n 3 //移位位数void change(char string[]){int i;for(i=0;string[i]!='\0';i++){if(string[i]>='a'&&string[i]<='z')string[i]=(string[i]+n<'a'?string[i]-n+26:string[i]-n); }}void main(){char str[100];printf("请输入一段密文");gets(str);change(str);printf("明文为:\n");puts(str);}仿射密码加密:#include<stdio.h>void fun( char a[],int x,int y) {int i;for(i=0;a[i]!='\0';i++){a[i]=(x*(a[i]-97)+y)%26+97;}}main(){char string[100];int x,y;printf("输入");gets(string);printf("请输入密钥");scanf("%d,%d",&x,&y);printf("明文:%s\n",string);fun(string,x,y);printf("密文为:%s\n",string); }仿射密码解密:#include<stdio.h>void fun( char a[],int x,int y) {int i;for(i=0;a[i]!='\0';i++){a[i]=(x*(a[i]-97)+y)%26+97;}}main(){char string[100];int x,y;printf("输入");gets(string);printf("请输入密钥");scanf("%d,%d",&x,&y);printf("密文:%s\n",string);fun(string,x,y);printf("明文:%s\n",string);}密码加密:#include<stdio.h>void change(char old[],char new1[][5]){ int i,j,t;char temp[20][5];t=strlen(old);for(i=t;i<(5-t%5)+t;i++) //将一维数组old每5个分成一组不足5位的用X 补充old[i]='x';for(i=t+(5-t%5);i<100;i++)old[i]='\0';for(i=0;i<20;i++) //将一维数组old转换成一个20*5的二维数组tempfor(j=0;j<5;j++)temp[i][j]=old[5*i+j];for(i=0;i<20;i++) //密文字母交换顺序{new1[i][0]=temp[i][1];new1[i][1]=temp[i][4];new1[i][2]=temp[i][3];new1[i][3]=temp[i][0];new1[i][4]=temp[i][2];}}main(){char old[100],new1[20][5];gets(old);change(old,new1);printf("%s",new1);}密码解密#include<stdio.h>void change(char old[],char new1[][5]){ int i,j,t;char temp[20][5];t=strlen(old);for(i=0;i<20;i++) //将一维数组old转换成一个20*5的二维数组tempfor(j=0;j<5;j++)temp[i][j]=old[5*i+j];for(i=0;i<20;i++) //密文字母交换顺序{new1[i][1]=temp[i][0];new1[i][4]=temp[i][1];new1[i][3]=temp[i][2];new1[i][0]=temp[i][3];new1[i][2]=temp[i][4];}}main(){char old[100],new1[20][5];gets(old);change(old,new1);printf("%s",new1);}实验二序列密码实验学时:2学时实验类型:验证实验要求:必修一、实验目的编程实现序列密码RC4的加密方法。
现代密码学-古典密码-实验报告
![现代密码学-古典密码-实验报告](https://img.taocdn.com/s3/m/4841eaa8700abb68a982fb9d.png)
现代密码学实验报告院系:理学院班级:信安二班姓名:学号:前言密码学(Cryptology)是研究秘密通信的原理和破译秘密信息的方法的一门学科。
密码学的基本技术就是对数据进行一组可逆的数学变换,使未授权者不能理解它的真实含义。
密码学包括密码编码学(Cryptography)和密码分析学(Cryptanalyst)两个既对立又统一的主要分支学科。
研究密码变化的规律并用之于编制密码以保护信息安全的科学,称为密码编码学。
研究密码变化的规律并用之于密码以获取信息情报的科学,称为密码分析学,也叫密码破译学。
密码学在信息安全中占有非常重要的地位,能够为信息安全提供关键理论与技术。
密码学是一门古老而深奥的学问,按其发展进程,经历了古典密码和现代密码学两个阶段。
现代密码学(Modern Cryptology)通常被归类为理论数学的一个分支学科,主要以可靠的数学方法和理论为基础,为保证信息的机密性、完整性、可认证性、可控性、不可抵赖性等提供关键理论与技术。
古典密码算法实验在密码编码体制中有两种基本也是古老的编码体制一直沿用至今,它们是代替密码和置换密码,其历史悠久并且是现代密码体制的基本组成部分,在密码学中占有重要地位。
古典密码是密码学发展的一个阶段,也是近代密码学产生的渊源,一般把Shannon 在1949 年发表“保密系统的通信理论”之前的时期称为古典密码时期。
尽管古典密码大多比较简单,一般可用手工或机械方式实现,且都可用统计分析方法破译,目前已很少采用。
但是,古典密码所采用的代替技术和置换技术仍然是现代分组密码算法设计的基础,了解它们的设计原理,有助于理解、设计和分析现代密码。
一、实验目的通过编程实现经典的代替密码算法和置换密码,包括移位密码、维吉尼亚密码、周期置换密码、列置换密码,加深对代替技术的了解,为现代分组密码实验奠定基础。
二、实验原理代替(Substitution)是古典密码中基本的处理技巧,就是将明文字母由其他字母表中的字母替换的一种方法。
经典密码学实验报告
![经典密码学实验报告](https://img.taocdn.com/s3/m/84bcd3f1dc3383c4bb4cf7ec4afe04a1b171b06c.png)
一、实验目的1. 了解经典密码学的基本原理和算法;2. 掌握古典密码的加密和解密方法;3. 通过编程实现古典密码的加密和解密过程;4. 体验古典密码的破解过程,加深对密码学原理的理解。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 开发工具:PyCharm三、实验内容本次实验主要涉及以下几种古典密码:1. 仿射密码2. 单表代替密码3. 维吉尼亚密码4. 移位密码1. 仿射密码(1)原理简介:仿射密码是一种单字母替换密码,加密公式为:Ci = (a pi + b) mod 26,其中,Ci 为密文,pi 为明文,a 和 b 为密钥。
(2)加密和解密代码实现:```pythondef encrypt(plain_text, a, b):cipher_text = ''for char in plain_text:if char.isalpha():cipher_text += chr(((ord(char.upper()) - ord('A') + a b) % 26) + ord('A'))else:cipher_text += charreturn cipher_textdef decrypt(cipher_text, a, b):plain_text = ''for char in cipher_text:if char.isalpha():plain_text += chr(((ord(char.upper()) - ord('A') - a b) % 26) + ord('A'))else:plain_text += charreturn plain_text```2. 单表代替密码(1)原理简介:单表代替密码是一种将明文中的每个字符映射到密文的密码,加密和解密过程是相反的。
移位算法报告
![移位算法报告](https://img.taocdn.com/s3/m/b1b666c7da38376baf1faee7.png)
实验报告姓名:22222222学号:2222222班级:22222222 日期:2013/11/*题目:移位密码实验一、实验环境1.硬件配置:处理器:Inter(R) Core(TM) i5-2430M CPU @ 2.40GHz (4 CPUs) ,~2.4GHz内存:2048MB RAM2.使用软件:(1) 操作系统:win7 旗舰版(2) 软件工具:Microsoft Visual c++ 6.0二、实验涉及的相关概念或基本原理移位密码的基本思想:移位密码算法 c=m+k(mod 26),k可以使0<k<26的任意整数。
三、实验内容根据实验原理的介绍,分别选取密钥的不同取值,创建一个明文信息,编写实现程序,实现加密和解密操作。
流程图:主要代码:void cry(int chose){int i;if(chose==1)printf("Please input the plain text:");elseprintf("Please input the cipher text:");input();for(i=0;strin[i];i++)if(strin[i]>='a'&&strin[i]<='z')if(chose==1)strout[i]=(strin[i]-'a'+key)%26+'a';elsestrout[i]=(strin[i]-'a'-key+26)%26+'a';elseif(strin[i]>='A'&&strin[i]<='Z')if(chose==1)strout[i]=(strin[i]-'A'+key)%26+'A';elsestrout[i]=(strin[i]-'A'-key+26)%26+'A';else strout[i]=strin[i];if(chose==1)printf("\ncipher text is :");elseprintf("\nplain text is :");show();}就是先把输入的字母转换为数字,然后利用公式c=m+k(mod 26)来求解得出密文。
大学密码算法实验报告
![大学密码算法实验报告](https://img.taocdn.com/s3/m/6a2a69b6b9f67c1cfad6195f312b3169a551ea71.png)
一、实验目的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)进行加密和解密操作,验证算法的正确性。
密码分析学实验报告
![密码分析学实验报告](https://img.taocdn.com/s3/m/bef99710777f5acfa1c7aa00b52acfc788eb9f1f.png)
一、实验目的本次实验旨在让学生了解密码分析学的基本原理和方法,掌握密码分析的基本步骤,并能够运用所学知识对简单的加密算法进行破解。
通过实验,提高学生对密码分析学的认识和实际操作能力。
二、实验内容1. 实验背景密码分析学是研究密码的编制和破译的学科,其主要任务是分析密码系统的安全性,找出其弱点,从而提高密码系统的安全性。
本次实验将针对古典密码和现代密码进行分析。
2. 实验步骤(1)古典密码分析①移位密码分析:选取一组明文和密钥,通过编写程序实现移位密码的加密和解密操作,观察并分析加密结果。
②维吉尼亚密码分析:选取一组明文和密钥,通过编写程序实现维吉尼亚密码的加密和解密操作,观察并分析加密结果。
③周期置换密码分析:选取一组明文和密钥,通过编写程序实现周期置换密码的加密和解密操作,观察并分析加密结果。
(2)现代密码分析①公钥密码分析:选取一组公钥和私钥,通过编写程序实现公钥密码的加密和解密操作,观察并分析加密结果。
②对称密码分析:选取一组密钥,通过编写程序实现对称密码的加密和解密操作,观察并分析加密结果。
3. 实验结果与分析(1)古典密码分析结果①移位密码:通过编写程序,我们可以观察到当密钥正确时,加密后的密文与明文之间的差异较大;当密钥错误时,加密后的密文与明文之间的差异较小。
②维吉尼亚密码:通过编写程序,我们可以观察到当密钥正确时,加密后的密文与明文之间的差异较大;当密钥错误时,加密后的密文与明文之间的差异较小。
③周期置换密码:通过编写程序,我们可以观察到当密钥正确时,加密后的密文与明文之间的差异较大;当密钥错误时,加密后的密文与明文之间的差异较小。
(2)现代密码分析结果①公钥密码:通过编写程序,我们可以观察到当公钥和私钥正确时,加密后的密文与明文之间的差异较大;当公钥和私钥错误时,加密后的密文与明文之间的差异较小。
②对称密码:通过编写程序,我们可以观察到当密钥正确时,加密后的密文与明文之间的差异较大;当密钥错误时,加密后的密文与明文之间的差异较小。
古典密码实验报告
![古典密码实验报告](https://img.taocdn.com/s3/m/580b13784a35eefdc8d376eeaeaad1f347931166.png)
一、实验名称古典密码实验二、实验目的1. 了解古典密码的基本原理和分类。
2. 掌握几种常见的古典密码(如移位密码、凯撒密码、维吉尼亚密码等)的加密和解密方法。
3. 通过编程实现古典密码的加密和解密过程,加深对密码学基础知识的理解。
三、实验内容1. 移位密码2. 凯撒密码3. 维吉尼亚密码4. 暴力破解方法四、实验原理1. 移位密码:将明文字符按照一定的规律进行移位,实现加密。
解密时,将密文字符反向移位,还原明文。
2. 凯撒密码:将明文字符按照固定的偏移量进行移位,实现加密。
解密时,将密文字符反向移位,还原明文。
3. 维吉尼亚密码:利用密钥对明文字符进行加密。
加密时,根据密钥中的字符对应明文字符的偏移量,实现加密。
解密时,根据密钥中的字符对应密文字符的偏移量,实现解密。
4. 暴力破解方法:通过遍历所有可能的密钥,尝试解密密文,找到有意义的明文。
五、实验步骤1. 移位密码(1)创建一个字符串作为明文,例如:“Hello, World!”(2)定义移位量,例如:3(3)编写加密函数,将明文字符按照移位量进行移位,得到密文。
(4)编写解密函数,将密文字符反向移位,还原明文。
2. 凯撒密码(1)创建一个字符串作为明文,例如:“Hello, World!”(2)定义密钥,例如:3(3)编写加密函数,将明文字符按照密钥的偏移量进行移位,得到密文。
(4)编写解密函数,将密文字符反向移位,还原明文。
3. 维吉尼亚密码(1)创建一个字符串作为明文,例如:“Hello, World!”(2)定义密钥,例如:“key”(3)编写加密函数,根据密钥中的字符对应明文字符的偏移量,实现加密。
(4)编写解密函数,根据密钥中的字符对应密文字符的偏移量,实现解密。
4. 暴力破解方法(1)创建一个字符串作为密文,例如:“Khoor, Zruog!”(2)编写暴力破解函数,遍历所有可能的密钥,尝试解密密文。
(3)找到有意义的明文,即为破解成功。
实验3-移位密码分析实验
![实验3-移位密码分析实验](https://img.taocdn.com/s3/m/f62066c184254b35eefd343b.png)
实验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。
移位密码实验报告
![移位密码实验报告](https://img.taocdn.com/s3/m/246964f96137ee06eff918a0.png)
实验报告姓名: 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进行解密时,出现无法执行下一步的情况,经过仔细调试,发现是设计思路有点小问题,解密函数模块未独立出来,而是依赖加密输入的密钥,经过将密钥设成全局变量后,实验结果符合预期结果。
移位密码算法实验报告(3篇)
![移位密码算法实验报告(3篇)](https://img.taocdn.com/s3/m/d012b09a05a1b0717fd5360cba1aa81145318f32.png)
第1篇一、实验目的1. 了解移位密码算法的基本原理和实现方法。
2. 掌握C语言编程实现移位密码算法的技巧。
3. 熟悉加密和解密的过程,并验证算法的正确性。
二、实验内容1. 理解移位密码算法的原理,包括密钥的选择、加密和解密过程。
2. 使用C语言编写加密和解密函数,实现移位密码算法。
3. 设计测试用例,验证加密和解密函数的正确性。
三、实验原理移位密码算法是一种古老的加密方法,通过将字母表中的每个字母向前或向后移动固定数量位置来进行加密和解密。
加密时,每个字母按照密钥指定的偏移量进行移位;解密时,将密文中的每个字母按照相同的偏移量反向移位,恢复出原始明文。
四、实验步骤1. 编写加密函数:实现将明文按照密钥指定的偏移量进行移位,生成密文。
```cvoid encrypt(char plaintext, char ciphertext, int key) {int i = 0;while (plaintext[i] != '\0') {if ((plaintext[i] >= 'a' && plaintext[i] <= 'z') ||(plaintext[i] >= 'A' && plaintext[i] <= 'Z')) {ciphertext[i] = ((plaintext[i] - 'a' + key) % 26 + 'a') % 26 + 'a';} else {ciphertext[i] = plaintext[i];}i++;}ciphertext[i] = '\0';}```2. 编写解密函数:实现将密文按照密钥指定的偏移量进行反向移位,恢复出明文。
```cvoid decrypt(char ciphertext, char plaintext, int key) {int i = 0;while (ciphertext[i] != '\0') {if ((ciphertext[i] >= 'a' && ciphertext[i] <= 'z') ||(ciphertext[i] >= 'A' && ciphertext[i] <= 'Z')) {plaintext[i] = ((ciphertext[i] - 'a' - key + 26) % 26 +'a') % 26 + 'a';} else {plaintext[i] = ciphertext[i];}i++;}plaintext[i] = '\0';}```3. 设计测试用例,验证加密和解密函数的正确性。
密码学实验报告
![密码学实验报告](https://img.taocdn.com/s3/m/44645972011ca300a6c39075.png)
(此文档为word格式,下载后您可任意编辑修改!)《—现代密码学—》实验指导书适用专业:计算机科学与技术江苏科技大学计算机科学学院2011年11 月实验一古典密码实验学时:2学时实验类型:验证实验要求:必修一、实验目的编程实现古典密码的加解密方法。
二、实验内容(1)移位密码的加密和解密函数。
(2)仿射密码的加密和解密函数。
(3)维吉尼亚密码的加密和解密函数。
三、实验原理、方法和手段(1)移位密码对于明文字符,加密密钥,加密方法为解密方法为(2)仿射密码对于明文字符,加密密钥,加密方法为=+==y ax b a b,gcd(,26)1,1,2,,25解密方法为(3)维吉尼亚密码选取密钥字Key,将明文按照密钥字长度分组,将明文与密钥字对应字符相加并对26求余,即为密文字符。
解密过程为四、实验组织运行要求本实验采用集中授课形式,每个同学独立完成上述实验要求。
五、实验条件每人一台计算机独立完成实验,有如下条件:(1)硬件:微机;(2)软件:VC++6.0、VC++.Net 2005。
六、实验步骤(1)将各函数编写完成;(2)在主函数中调用各函数,实现加密和解密。
七、实验报告实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。
移位密码加密:#include<stdio.h>#define n 3 //移位位数void change(char string[]){int i;for(i=0;string[i]!='\0';i++){if(string[i]>='a'&&string[i]<='z')string[i]=(string[i]+n>='z'?string[i]+n-26:string[i]+n); }}void main(){char str[100];printf("请输入一段明文");gets(str);change(str);printf("密文为:\n");puts(str);}移位密码解密:#include<stdio.h>#define n 3 //移位位数void change(char string[]){int i;for(i=0;string[i]!='\0';i++){if(string[i]>='a'&&string[i]<='z')string[i]=(string[i]+n<'a'?string[i]-n+26:string[i]-n); }}void main(){char str[100];printf("请输入一段密文");gets(str);change(str);printf("明文为:\n");puts(str);}仿射密码加密:#include<stdio.h>void fun( char a[],int x,int y){int i;for(i=0;a[i]!='\0';i++){a[i]=(x*(a[i]-97)+y)%26+97;}}main(){char string[100];int x,y;printf("输入");gets(string);printf("请输入密钥");scanf("%d,%d",&x,&y);printf("明文:%s\n",string);fun(string,x,y);printf("密文为:%s\n",string); }仿射密码解密:#include<stdio.h>void fun( char a[],int x,int y) {int i;for(i=0;a[i]!='\0';i++){a[i]=(x*(a[i]-97)+y)%26+97;}}main(){char string[100];int x,y;printf("输入");gets(string);printf("请输入密钥");scanf("%d,%d",&x,&y);printf("密文:%s\n",string);fun(string,x,y);printf("明文:%s\n",string);}密码加密:#include<stdio.h>void change(char old[],char new1[][5]){ int i,j,t;char temp[20][5];t=strlen(old);for(i=t;i<(5-t%5)+t;i++) //将一维数组old每5个分成一组不足5位的用X补充old[i]='x';for(i=t+(5-t%5);i<100;i++)old[i]='\0';for(i=0;i<20;i++) //将一维数组old转换成一个20*5的二维数组tempfor(j=0;j<5;j++)temp[i][j]=old[5*i+j];for(i=0;i<20;i++) //密文字母交换顺序{new1[i][0]=temp[i][1];new1[i][1]=temp[i][4];new1[i][2]=temp[i][3];new1[i][3]=temp[i][0];new1[i][4]=temp[i][2];}}main(){char old[100],new1[20][5];gets(old);change(old,new1);printf("%s",new1);}密码解密#include<stdio.h>void change(char old[],char new1[][5]){ int i,j,t;char temp[20][5];t=strlen(old);for(i=0;i<20;i++) //将一维数组old转换成一个20*5的二维数组tempfor(j=0;j<5;j++)temp[i][j]=old[5*i+j];for(i=0;i<20;i++) //密文字母交换顺序 {new1[i][1]=temp[i][0];new1[i][4]=temp[i][1];new1[i][3]=temp[i][2];new1[i][0]=temp[i][3];new1[i][2]=temp[i][4];}}main(){char old[100],new1[20][5];gets(old);change(old,new1);printf("%s",new1);}实验二序列密码实验学时:2学时实验类型:验证实验要求:必修一、实验目的编程实现序列密码RC4的加密方法。
移位加密实验报告
![移位加密实验报告](https://img.taocdn.com/s3/m/b56b5211f6ec4afe04a1b0717fd5360cbb1a8d5c.png)
一、实验目的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”。
凯撒密码的实验报告
![凯撒密码的实验报告](https://img.taocdn.com/s3/m/b0a8eb85ab00b52acfc789eb172ded630b1c98fb.png)
凯撒密码的实验报告凯撒密码的实验报告引言:密码学作为一门古老而神秘的学科,一直以来都吸引着人们的兴趣。
而凯撒密码作为密码学的基础,其简单而又经典的加密方式,更是备受研究者和爱好者的关注。
本实验旨在通过对凯撒密码的实践应用,深入了解其原理和加密解密过程。
一、凯撒密码的原理凯撒密码,又称移位密码,是一种最早被记录的密码系统。
其基本原理是通过将明文中的每个字母按照一定的规则进行移位,从而得到密文。
在凯撒密码中,移位的规则是将字母按照顺序向后移动固定的位置,例如向后移动3个位置,即A变成D,B变成E,以此类推。
二、实验步骤1. 确定移位规则:在本次实验中,我们选择了向后移动3个位置的规则进行加密和解密。
2. 加密过程:将明文中的每个字母按照移位规则进行替换,得到对应的密文。
例如,明文中的字母A将被替换为D,字母B将被替换为E,以此类推。
3. 解密过程:将密文中的每个字母按照移位规则进行逆向替换,得到对应的明文。
例如,密文中的字母D将被替换为A,字母E将被替换为B,以此类推。
三、实验结果通过对凯撒密码的加密和解密实验,我们得到了以下结果:1. 加密结果:将明文“HELLO WORLD”加密后得到密文“KHOOR ZRUOG”。
2. 解密结果:将密文“KHOOR ZRUOG”解密后得到明文“HELLO WORLD”。
四、实验分析通过对凯撒密码的实验结果进行分析,我们可以得出以下结论:1. 凯撒密码的加密过程是可逆的,即通过解密过程可以还原出原始的明文。
2. 凯撒密码的加密强度较低,容易受到暴力破解的攻击。
因为凯撒密码只有26种可能的移位规则,暴力破解者可以通过尝试每一种规则来解密密文。
3. 凯撒密码的应用范围有限,适用于一些简单的信息加密场景,但在现代密码学中已经不再被广泛使用。
五、实验总结通过本次实验,我们对凯撒密码有了更深入的了解。
凯撒密码作为密码学的基础,为后来的密码学研究奠定了基础。
虽然凯撒密码的加密强度较低,但其简单易懂的原理和操作方式,使其成为初学密码学的入门工具。
密码实验报告2
![密码实验报告2](https://img.taocdn.com/s3/m/912fa20e03d8ce2f006623b7.png)
一、实验目的该实验为验证性实验。
通过本实验,使学生对于两种基本的古典密码编码方法(“代替”与“移位”)产生深刻的感性认识,体验清楚二者之间的本质差异,为理解和掌握现代密码的相应知识打下良好基础。
二、实验内容1. 设计一个周期 3 的多表代替密码并予以实现,要求:第 1 个表由密钥字法产生(密钥字自拟),第 2 个表由洗牌法产生(注意,字母 a~z 与数字 0~25一一对应,洗牌法即相当于实验一的方法 1(n=25)),第三个表由公式法产生(数学公式自拟,注意它须是 Z26 上的一个一一变换)。
2. 设计一个周期 5 的 16-置换移位密码并予以实现,要求:5 个 16-置换至少有一个是由实验一(n=15)提供的两个方法以外、自行设计的其它方法产生。
三、实验要求1. 上述两个古典密码的编程实现,须能对下面一段明文进行正确加密(对代替密码,空格和标点符号保持不动;对移位密码,空格和标点符号也移位):Q is a symmetric block cipher. It is defined for a block size of 128 bits. Itallows arbitrary length passwords. The design is fairly conservative. It consists of a simple substitution-permutation network. In this paper we presentthe cipher, its design criteria and our analysis. The design is based on bothRjindael and Serpent. It uses an 8-bit s-box from Rjindael with the linear mixinglayers replaced with two Serpent style bit-slice s-boxes and a linearpermutation. The combination of methods eliminates the high level structure inherent in Rjindael while having better speed and avalanche characteristics than Serpent. Speed is improved over Serpent. This version 2.00 contains better analysis, editorial changes, and an improved key schedulingalgorithm. The number of recommended rounds is also increased.2. 抓图显示密文(附页),不能出现明显错误。
移位运算实验实验报告
![移位运算实验实验报告](https://img.taocdn.com/s3/m/06b7e0c070fe910ef12d2af90242a8956aecaa73.png)
移位运算实验实验报告移位运算实验实验报告引言移位运算是计算机中常用的操作之一,通过对二进制数进行左移或右移来改变数值的位数和位置。
本实验旨在通过实际操作和观察,深入理解移位运算的原理和应用。
实验目的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。
结论通过本次实验,我们对移位运算有了更深入的理解。
移位密码的实验报告
![移位密码的实验报告](https://img.taocdn.com/s3/m/8d721955ba68a98271fe910ef12d2af90242a8bf.png)
一、实验目的1. 理解移位密码的基本原理和操作方法。
2. 掌握使用移位密码进行加密和解密的过程。
3. 通过实验,验证移位密码的安全性及在实际应用中的可行性。
二、实验环境1. 实验平台:Windows操作系统2. 实验工具:Python编程语言、PyCryptodome库三、实验原理移位密码是一种古老的加密方法,其原理是将明文中的每个字符按照一定的规律进行移位,形成密文。
解密时,再按照相同的规律将密文字符移回原来的位置,即可得到明文。
移位密码分为两种:凯撒密码和Vigenère密码。
1. 凯撒密码:将明文中的每个字符按照字母表顺序向左或向右移动固定的位数,形成密文。
解密时,将密文中的每个字符按照相同的位数向左或向右移动,即可得到明文。
2. Vigenère密码:使用一个密钥(由字母组成)来控制每个字符的移位量。
密钥中的每个字母对应一个固定的移位量。
解密时,需要使用相同的密钥。
四、实验步骤1. 编写凯撒密码加密和解密函数。
```pythondef caesar_encrypt(plaintext, key):ciphertext = ""for char in plaintext:if char.isalpha():offset = ord(key) % 26if char.islower():ciphertext += chr((ord(char) - ord('a') + offset) % 26 + ord('a'))else:ciphertext += chr((ord(char) - ord('A') + offset) % 26 + ord('A'))else:ciphertext += charreturn ciphertextdef caesar_decrypt(ciphertext, key):plaintext = ""for char in ciphertext:if char.isalpha():offset = ord(key) % 26if char.islower():plaintext += chr((ord(char) - ord('a') - offset) % 26 + ord('a'))else:plaintext += chr((ord(char) - ord('A') - offset) % 26 + ord('A'))else:plaintext += charreturn plaintext```2. 编写Vigenère密码加密和解密函数。
移位运算实验报告
![移位运算实验报告](https://img.taocdn.com/s3/m/a68a27996e1aff00bed5b9f3f90f76c661374c8b.png)
移位运算实验报告移位运算实验报告一、引言移位运算是计算机中常用的一种操作,它可以对二进制数进行位移操作,即将数的二进制位向左或向右移动一定的位数。
移位运算在计算机科学领域有着广泛的应用,例如在图像处理、数据压缩和密码学等方面。
本实验旨在通过实际操作,深入理解移位运算的原理和应用。
二、实验目的1. 掌握移位运算的基本概念和原理。
2. 熟悉移位运算的不同类型及其应用。
3. 实践运用移位运算解决实际问题。
三、实验方法本实验使用C语言编写程序,在实验环境中进行移位运算的实验。
实验过程中,使用了位移运算符(<<和>>)以及逻辑运算符(&、|和~)。
四、实验步骤1. 移位运算符的基本使用首先,我们通过一个简单的例子来了解移位运算符的基本使用。
假设我们有一个8位的二进制数11001100,我们可以将其向左移动2位,得到00110000。
同样地,我们也可以将其向右移动2位,得到001100。
通过这个例子,我们可以看到移位运算符的作用是将数的二进制位向左或向右移动指定的位数。
2. 逻辑运算符与移位运算符的结合使用接下来,我们将逻辑运算符与移位运算符结合使用,以进一步探索移位运算的应用。
假设我们有一个8位的二进制数10101010,我们可以通过将其与一个掩码(mask)进行按位与(&)运算,来实现对指定位的置0操作。
例如,我们可以将其与掩码11110000进行按位与运算,得到10100000。
通过这种方式,我们可以灵活地控制二进制数的某些位。
3. 移位运算的应用移位运算在计算机科学中有着广泛的应用。
其中一个典型的应用是图像处理中的像素值调整。
假设我们有一张图像,每个像素点的颜色值由RGB三个分量组成,每个分量占据8位。
我们可以通过移位运算来调整图像的亮度、对比度等。
例如,我们可以将图像的红色分量向右移动2位,来降低图像的亮度。
五、实验结果与分析通过本次实验,我们深入理解了移位运算的原理和应用。
实验移位密码的加密和破解
![实验移位密码的加密和破解](https://img.taocdn.com/s3/m/2721d68ad1f34693daef3eea.png)
实验移位密码的加密和破解
【实验目的】
1) 掌握移位密码的编码原理,进而加深对古典密码学的了解。
2) 结合已知的英文字母出现频率,了解移位密码的缺点。
【实验环境】
Windows系统或Linux系统,VC。
【实验重点及难点】
重点:1) 利用VC编写移位密码的加密算法。
2) 结合已知的英文字母出现频率,对移位密码进行破解。
难点:利用VC编写移位密码的加密算法。
【实验内容】
1、移位密码的原理
加密:e(x)=(x+K) mod 26
解密:d(y)=(y-K) mod 26
则对应的整数为:
22 4 22 8 11 11 12 4 4 19
0 19 12 8 3 13 8 6 7 19
每个数与11相加,其和对26取模,可得:
7 15 7 19 22 22 23 15 15 4
11 4 23 19 14 24 19 17 18 4
则密文为:
hphtwwxppelextoytrse
2、根据上面介绍的移位密码的原理,自己创建明文,并选择密码K,编写移位密码算法的
实现程序,实现加密和解密操作
3、在加密算法中实现对英文字母进行统计的功能模块,并计算每个字母出现的频率。
4、需找一篇英文文章,利用上面的加密算法进行加密,并统计加密后的各个字母出现的频
率,结合课本,尝试推断加密密钥K。
5、加密明文:computer engineering college
6、将加密的密文解密。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
姓名: 2222 学号: 022222 班级:2222全日期: 22222
1 古典密码(移位密码)
一、实验环境
1.硬件配置:处理器:Corei5 M 450@
2.40GHZ,内存2GB,主硬盘
320G
2.使用软件:
(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进行解密时,出现无法执行下一步的情况,经过仔细调试,发现是设计思路有点小问题,解密函数模块未独立出来,而是依赖加密输入的密钥,经过将密钥设成全局变量后,实验结果符合预期结果。
Welcome !!! 欢迎您的下载,资料仅供参考!。