实验报告2---古典密码playfair
- 格式:doc
- 大小:52.00 KB
- 文档页数:3
古典密码-普莱菲尔密码Playfair本⽂⽬的在于整合了⽹上的Playfair Cipher原理、解密及算法实现⼤部分均为转载,可以链接到原⽂地址查看,这⾥只是整合⽂章简介以下直接搬运原⽂,便于查看,也可以直接链接到原⽂地址查看ctf-wiki-PlayfairPlayfair 密码(Playfair cipher or Playfair square)是⼀种替换密码,1854 年由英国⼈查尔斯 · 惠斯通(Charles Wheatstone)发明,基本算法如下:选取⼀串英⽂字母,除去重复出现的字母,将剩下的字母逐个逐个加⼊ 5 × 5 的矩阵内,剩下的空间由未加⼊的英⽂字母依 a-z 的顺序加⼊。
注意,将 q 去除,或将 i 和 j 视作同⼀字。
将要加密的明⽂分成两个⼀组。
若组内的字母相同,将 X(或 Q)加到该组的第⼀个字母后,重新分组。
若剩下⼀个字,也加⼊ X 。
在每组中,找出两个字母在矩阵中的地⽅。
若两个字母不同⾏也不同列,在矩阵中找出另外两个字母(第⼀个字母对应⾏优先),使这四个字母成为⼀个长⽅形的四个⾓。
若两个字母同⾏,取这两个字母右⽅的字母(若字母在最右⽅则取最左⽅的字母)。
若两个字母同列,取这两个字母下⽅的字母(若字母在最下⽅则取最上⽅的字母)。
新找到的两个字母就是原本的两个字母加密的结果。
以 playfair example 为密匙,得P L A Y FI R E X MB C D G HK N O Q ST U V W Z要加密的讯息为 Hide the gold in the tree stumpHI DE TH EG OL DI NT HE TR EX ES TU MP就会得到BM OD ZB XD NA BE KU DM UI XM MO UV IF-Playfair该⽹站详细地介绍了Playfair密码,包括历史、运⽤、⽹页实现、python实现等等唯⼀的缺点就是全英Cryptanalysis of the Playfair cipher⽂章介绍了Playfair密码的破译,不过⼜是英⽂Decrypto在线⽹页CAPtfEncoder。
实验报告一、试验室名称:SimpleSPC信息安全云试验系统二、试验项目名称:古典密码——置换密码三、试验课时:1课时四、试验原理:1) 算法原理a) 置换密码算法是不变化明文字符,而是按照某一规则重新排列消息中旳比特或字符次序,才而实现明文信息旳加密。
将明文中旳字母按照给定旳次序安排在一种矩阵中,然后用根据密钥提供旳次序重新组合矩阵中旳字母,从而形成密文。
其解密过程是根据密钥旳字母数作为列数,将密文按照列、行旳次序写出,再根据密钥给出旳矩阵置换产生新旳矩阵,从而恢复明文。
b) 置换密码(Permutation Cipher),又称换位密码。
算法实行时,明文旳字母保持相似,但次序会被打乱。
置换只不过是一种简朴旳换位,每个置换都可以用一种置换矩阵Ek来表达。
每个置换均有一种与之对应旳逆置换Dk。
置换密码旳特点是仅有一种发送方和接受方懂得旳加密置换(用于加密)及对应旳逆置换(用于解密)。
它是对明文L长字母组中旳字母位置进行重新排列,而每个字母自身并不变化。
c) 设n为一固定整数,P、C和K分别为明文空间、密文空间和密钥空间。
明/密文是长度为n旳字符序列,分别记为X(x1,x2,…,xn)属于P 和Y(y1,y2,…,yn)属于C ,K是定义在{1,2,…,n}旳所有置换构成旳集合。
对任何一种密钥(即一种置换),定义置换如下:加密置换为:解密置换为:上式中,是旳逆置换,密钥空间K旳大小为n!2) 算法参数置换密码算法重要有c、m、k、n四个参数。
c为密文,m是明文,k为密钥,n为模数。
3) 算法流程算法流程。
如图所示五、试验目旳:1)学习置换密码旳原理2)学习置换密码旳算法实现六、试验内容:1.在虚拟机上运行置换密码.exe可执行文献,根据提醒输入明文和密钥,同步检查输出旳解密后旳成果与否与明文一致。
2.学习掌握置换密码旳原理,并根据明文和密钥计算出对应旳加密文,并与程序输出旳成果进行比对,掌握其加密解密旳过程。
实验2 古典密码1.实验目的(1)了解古典密码中的基本加密运算。
(2)了解几种典型的古典密码体制。
(3)掌握古典密码的统计分析方法。
2.实验内容(1)古典密码体制①简单移位加密(单表代换)该加密方法中,加密时将明文中的每个字母向前推移K位。
经典恺撒密码加密变换就是这种变换,取k=3。
步骤1:打开CAP4软件,并加载实验一附带的“mw.txt”,如图2-1所示。
图2-1加载文件步骤2:采用恺撒加密方法手工加密“mw.txt”;打开CAP4菜单栏“Cipher”菜单项选择“simple shift”选项,并选择移位值“shift value”为3,加密步骤1中加载的文件,如图2-2所示。
图2-2 参数设置图2-3加密文件步骤3:比较二者的加密结果是否相同。
步骤4:点击CAP4软件中的“Simple analysis”下的“shift”键,观察恺撒加密法的可能密钥值,并分析其攻击的难度,如图2-4所示。
图2-4密钥分析②仿射密码加密(单表代换)在仿射密码加密(affine cipher)中,字母表中的字母被赋予一个数字,例如,a=0,b=1,c=2,…,z=25.仿射密码加密法的密钥为0~25之间的数字对(a,b)。
a与26的最大公约数必须为1,这就是说能整除a和26的数只有1.现在假设m为明文字母的数字,而c为密文字母的数字,那么,这两个数字之间有如下关系: c=(am+b)(mod 26)m=a-1(c-b)(mod 26)其中,(mod 26)的操作是:除以26,得其余数。
例如,选取密钥为(7,3)。
因为7与26互素,也就是只有公约数1,所以(7,3)可以作为仿射密码的加密钥。
将“hot”转换成数字7、14、19,利用仿射等式生成: c(H)=(7×7+3) mod 26=52 mod 26=0,即为字母“a“。
c(O)=(7×14+3) mod 26=101 mod 26=23,即为字母“x“.c(T)=(7×19+3) mod 26=136 mod 26=6,即为字母”g”. 这样,对于这个密钥,”hot”变成了“axg“.CAP4软件中实现仿射密码加密:步骤1:在CAP4软件中加载要加密地的明文“mw.txt“.步骤2:选取Cipher菜单下的Affine Cipher菜单项,弹出如下对话框,如图2-5所示。
古典密码的实验报告古典密码的实验报告引言:密码学作为一门古老而又神秘的学科,一直以来都吸引着人们的兴趣。
在古代,人们用各种各样的密码来保护重要信息的安全性。
本实验旨在通过实际操作,探索古典密码的加密原理和破解方法,从而深入了解密码学的基本概念和应用。
一、凯撒密码凯撒密码,又称移位密码,是最简单的一种古典密码。
其原理是通过将明文中的每个字母按照一定的规则进行移位,得到密文。
在本实验中,我们选择了一个简单的凯撒密码进行破解。
首先,我们选择了一段明文:“HELLO WORLD”,并将其按照凯撒密码的规则进行移位,假设移位数为3,则得到密文:“KHOOR ZRUOG”。
接下来,我们尝试使用暴力破解的方法来还原明文。
通过尝试不同的移位数,我们发现当移位数为3时,得到的明文与原文完全一致。
这表明我们成功地破解了凯撒密码,并还原了原始的明文。
二、维吉尼亚密码维吉尼亚密码是一种基于多个凯撒密码组合而成的密码算法。
其原理是通过使用不同的移位数对明文进行加密,从而增加了密码的复杂度。
在本实验中,我们选择了一段明文:“CRYPTOGRAPHY”,并使用维吉尼亚密码进行加密。
我们选择了一个关键词“KEY”作为加密密钥。
首先,我们将关键词“KEY”重复至与明文长度相同,得到“KEYKEYKEYKEYK”。
然后,将明文中的每个字母与关键词中对应位置的字母进行凯撒密码的移位操作。
经过加密后,我们得到了密文:“LXFOPVEFRNHR”。
接下来,我们尝试使用破解方法来还原明文。
通过尝试不同的关键词和移位数的组合,我们发现当关键词为“KEY”且移位数为3时,得到的明文与原文完全一致。
这表明我们成功地破解了维吉尼亚密码,并还原了原始的明文。
三、栅栏密码栅栏密码是一种基于换位操作的密码算法。
其原理是通过将明文中的字母按照一定的规则进行重新排列,得到密文。
在本实验中,我们选择了一段明文:“HELLO WORLD”,并使用栅栏密码进行加密。
一、实验目的通过本次实验,掌握古典加密算法的基本原理和实现方法,加深对古典加密算法的理解,提高编程能力。
二、实验内容本次实验主要涉及以下古典加密算法:1. 仿射密码2. 单表代替密码3. 维吉尼亚密码三、实验原理1. 仿射密码仿射密码是一种单字母替换密码,其加密原理为将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。
解密原理与加密原理相反。
2. 单表代替密码单表代替密码的加密原理为利用代替表,将明文中的每个字符映射到密文。
解密原理为对代替表进行反向查找,由密文映射回明文。
3. 维吉尼亚密码维吉尼亚密码的加密原理为通过加密方程Ci = (pi k(i mod m)) mod 26,由明文得到密文。
解密原理为解密过程是加密过程的逆过程,通过解密方程pi = (Ci k(i mod m)) mod 26。
四、实验步骤1. 仿射密码(1)编写加密函数encrypt,输入明文和密钥a、b,输出密文。
(2)编写解密函数decrypt,输入密文和密钥a、b,输出明文。
(3)测试加密和解密函数,验证其正确性。
2. 单表代替密码(1)编写加密函数subencrypt,输入明文和代替表,输出密文。
(2)编写解密函数subdecrypt,输入密文和代替表,输出明文。
(3)测试加密和解密函数,验证其正确性。
3. 维吉尼亚密码(1)编写加密函数vigenereencrypt,输入明文和密钥,输出密文。
(2)编写解密函数vigeneredecrypt,输入密文和密钥,输出明文。
(3)测试加密和解密函数,验证其正确性。
五、实验结果与分析1. 仿射密码通过编写encrypt和解密函数,成功实现了仿射密码的加密和解密过程。
实验结果表明,加密和解密函数运行正常,能够正确转换明文和密文。
2. 单表代替密码通过编写subencrypt和解密函数,成功实现了单表代替密码的加密和解密过程。
一、实验室名称:网络工程实验室二、实验项目名称:古典密码实验三、实验学时:2学时四、实验原理:古典密码算法的基本原理(单表密码,多表密码,密码分析);五、实验目的:目的:实现密码算法(Hill密码,Vigenère密码)并掌握加密过程原理六、实验内容:a)Hill密码的基本原理希尔密码(Hill Password)是运用基本矩阵论原理的替换密码算法如下:1、假设要加密的明文是由26个字母组成,其他字符省略。
2、将每个字符与0-25的一个数字一一对应起来。
(例如:a/A—0,b/B—1,……z/Z—25)。
3、选择一个加密矩阵A,其中矩阵A必须是可逆(n*n)矩阵,例如4、将明文字母分别依照次序每n个一组(如果最后一组不足n个的话,就将其补成n个),依照字符与数字的对应关系得到明文矩阵ming 。
5、通过加密矩阵A,利用矩阵乘法得到密文矩阵mi = A*ming mod 26;6、将密文矩阵的数字与字符对应起来,得到密文。
7、解密时利用加密矩阵的逆矩阵A-1和密文,计算ming=A-1*mi mod 26,可得到明文核心代码:循环体外:String message = new String("helloworld");int len = message.length();char[] cipArray = new char[len];char[] messageArray = new char[len];循环处理中:a=message.charAt(i*2)-'a';b=message.charAt(i*2+1)-'a';temp1 = (a*encryptKey[0][0] + b*encryptKey[0][1])%26;if (temp1<0){temp1 = temp1 + 26;}temp2 = (a*encryptKey[1][0] + b*encryptKey[1][1])%26;if (temp2<0){temp2 =temp2 + 26;}cipArray[i*2] =(char) (temp1+97);cipArray[i*2+1] = (char)(temp2+97);解密算法略。
一.问题描述:著名的多表古典加密体制使Playfair,它将明文中的双字母组合作为一个单元对待,并将这些单元转换为密文双字母组合。
Playfair算法基于使用一个5×5字母矩阵,该矩阵使用一个关键词构造。
这里有一个例子,是由Lord Peter Wimsey 在Dorothy Sayer的书《Have His Carcase》中解答的。
M O N A RC H Y B DE F G I/J KL P Q S TU V W X Z在这里,该关键词是monarchy。
该矩阵该矩阵是这样构造的;从左至右、从上至下填入该关键词的字母(去除重复字母),然后再以字母表顺序将余下的字母填入矩阵剩余空间。
字母I和J 被算作一个字母。
Playfair根据下列规则一次对明文的两个字母加密:(1)、属于相同对中的重复的明文字母将用一个填充字母进行分隔,因此,词balloon将被加密为ba lx lo on。
(2)、属于该矩阵相同行的明文字母将由其右边的字母替代,而行的最后一个字母由行的第一个字母代替。
例如,ar被加密为RM。
(3)、属于相同列的明文字母将由它下面的字母代替,而列的最后一个字母由列的第一个字母代替。
例如,mu被加密为CM。
(4)、否则,明文的其他字母将由与其同行,且与下一个同列的字母代替。
因此,hs成为BP,ea成为IM(或JM,这可根据加密者的意愿而定)。
基本要求:二.基本要求:根据多表代换密码的特点,编写playfair软件,并以monarchy密钥进行测试,验证加密结果。
三.实验代码:#include<iostream>#include<cstring>using namespace std;void decrypt();//解密函数void encrypt();//加密函数void main(){cout<<" ____________________________________________"<<endl;cout<<"| |"<<endl;cout<<"| 多表代换密码Playfair的实现|"<<endl;cout<<"| 欢迎使用本程序|"<<endl;cout<<"|____________________________________________|"<<endl;int n=0;for(;n!=3;){cout<<" ____________________________"<<endl;cout<<" | 选择你所需要的操作:|"<<endl;cout<<" | 1.为字符串加密|"<<endl;cout<<" | 2.为字符串解密|"<<endl;cout<<" | 3.结束程序|"<<endl;cout<<" |___________________________|"<<endl;cout<<" 选择操作:";cin>>n;if(n<1||n>3)cout<<"无该项操作,请重来:"<<endl;switch(n){case 1:cout<<"__________________________________________"<<endl;cout<<"| 加密结束|"<<endl;cout<<"|_________________________________________|"<<endl;encrypt();break;case 2:cout<<"__________________________________________"<<endl;cout<<"| 解密结束|"<<endl;cout<<"|_________________________________________|"<<endl;decrypt();break;case 3:cout<<"__________________________________________"<<endl;cout<<"| 程序结束,谢谢您的使用! ^_^ |"<<endl;cout<<"|_________________________________________|"<<endl;cout<<endl;break;default:break;}}system("pause");}void encrypt(){const int N=100;char letters[26]="ABCDEFGHIKLMNOPQRSTUVWXYZ";//用于填充矩阵int flag[25]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//字母是否已在矩阵中,与letters数组对应char ch[5][5];//5X5矩阵char ch1[N];//密钥char ch2[N];//明文char ch4;//无关字符int len='a'-'A';cout<<"输入密钥:";cin>>ch1;int flg=1;while(flg==1){for(int i=0;i<strlen(ch1);i++)//把所输入的密钥转化为大写字母{if(ch1[i]>'z'||ch1[i]<'a'){cout<<"请重新选择操作:"<<endl;flg=0;break;}elsech1[i]=ch1[i]-len;}if(flg==1){ for(i=0;i<strlen(ch1);i++)//把密钥中的J都变为I{if(ch1[i]=='J')ch1[i]='I';}i=0;int j=0;//把密钥中的字母填入到矩阵中,并把该字母标记为已用for(int k=0;k<strlen(ch1);k++){for(int t=0;t<25;t++){if(ch1[k]==letters[t]&&flag[t]==0){ch[i][j]=letters[t];flag[t]=1;if(j<4)j++;else {i++;j=0;}}}}for( k=0;k<25;k++)//按字母表顺序把未用字母依次填入到矩阵中{if(flag[k]==0){ch[i][j]=letters[k];flag[k]=1;if(j<4)j++;else{i++;j=0;}}}cout<<"密钥填充后的矩阵为:"<<endl;for(i=0;i<5;i++)for(j=0;j<5;j++){cout<<ch[i][j];cout<<" ";if(j==4)cout<<endl;}cout<<endl;cout<<"请输入明文(请输入英文字符):";cin>>ch2;cout<<"输入一个无关字符:";cin>>ch4;if(ch4>='a')ch4=ch4-len;for(k=0;k<strlen(ch2);k++)//把所输入的明文转化为大写字母{if(ch2[k]>='a')ch2[k]=ch2[k]-len;}for(k=0;k<strlen(ch2);k++)//把明文中的J都变为I{if(ch2[k]=='J')ch2[k]='I';}//为明文添加必要的无关字符以防止同一组的两个字符相同for( k=0;k<strlen(ch2);k+=2){if(ch2[k]==ch2[k+1]){for(int t=strlen(ch2);t>k;t--)ch2[t+1]=ch2[t];ch2[k+1]=ch4;}}//若明文有奇数个字符,则添加一个无关字符以凑够偶数个if(strlen(ch2)%2!=0){ch2[strlen(ch2)+1]=ch2[strlen(ch2)];//字符串结尾赋'\0' ch2[strlen(ch2)]=ch4;//明文串尾插入无关字符}cout<<"经过处理后的明文为:";for(k=0;k<strlen(ch2);k+=2)cout<<ch2[k]<<ch2[k+1]<<" ";cout<<endl;cout<<"其最终长度为:"<<strlen(ch2)<<endl;//////////////////明文输入并整理完毕///////////////////////////////for(k=0;k<strlen(ch2);k+=2){int m1,m2,n1,n2;for(m1=0;m1<=4;m1++){for(n1=0;n1<=4;n1++){if(ch2[k]==ch[m1][n1])break;}if(ch2[k]==ch[m1][n1])break;}for(m2=0;m2<=4;m2++){for(n2=0;n2<=4;n2++){if(ch2[k+1]==ch[m2][n2])break;}if(ch2[k+1]==ch[m2][n2])break;}m1=m1%5;m2=m2%5;if(n1>4){n1=n1%5;m1=m1+1;}if(n2>4){n2=n2%5;m2=m2+1;}if(m1==m2){ch2[k]=ch[m1][(n1+1)%5];ch2[k+1]=ch[m2][(n2+1)%5];}else{if(n1==n2){ch2[k]=ch[(m1+1)%5][n1];ch2[k+1]=ch[(m2+1)%5][n2];}else{ch2[k]=ch[m1][n2];ch2[k+1]=ch[m2][n1];}}}cout<<"加密后所得到的密文是:";for(k=0;k<strlen(ch2);k+=2)cout<<ch2[k]<<ch2[k+1]<<" ";cout<<endl;}else break;}}//解密算法void decrypt(){const int N=100;char letters[26]="ABCDEFGHIKLMNOPQRSTUVWXYZ";//用于填充矩阵int flag[25]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//标记字母是否已在矩阵中,与letters数组对应char ch[5][5];//5X5矩阵char ch1[N];//密钥char ch2[N];//密文int len='a'-'A';int flg=1;cout<<"输入密钥:";cin>>ch1;while(flg==1){for(int i=0;i<strlen(ch1);i++)//把所输入的密钥转化为大写字母{if(ch1[i]>'z'||ch1[i]<'a'){cout<<"请重新选择操作:"<<endl;flg=0;break;}elsech1[i]=ch1[i]-len;}if(flg==1){ for(i=0;i<strlen(ch1);i++)//把密钥中的J都变为I{if(ch1[i]=='J')ch1[i]='I';}i=0;int j=0;//把密钥中的字母填入到矩阵中,并把该字母标记为已用for(int k=0;k<strlen(ch1);k++){for( int t=0;t<25;t++){if(ch1[k]==letters[t]&&flag[t]==0){ch[i][j]=letters[t];flag[t]=1;if(j<4)j++;else {i++;j=0;}}}}for( k=0;k<25;k++)//按字母表顺序把未用字母依次填入到矩阵中{if(flag[k]==0){ch[i][j]=letters[k];flag[k]=1;if(j<4)j++;else{i++;j=0;}}}cout<<"密钥填充后的矩阵为:"<<endl;for(i=0;i<5;i++)for(j=0;j<5;j++){cout<<ch[i][j];cout<<" ";if(j==4)cout<<endl;}cout<<endl;/////////////////////矩阵生成完毕////////////////////////////int f=0;do{cout<<"请输入密文(英文字符):";cin>>ch2;for(int k=0;k<strlen(ch2);k++)//把所输入的密文转化为大写字母{if(ch2[k]>='a')ch2[k]=ch2[k]-len;}for( k=0;k<strlen(ch2);k++)//把密文中的J都变为I{if(ch2[k]=='J')ch2[k]='I';}for( k=0;k<strlen(ch2);k+=2){if(ch2[k]==ch2[k+1]){cout<<"同一分组中不能出现相同字符!请重新输入。
现代密码学实验报告院系:理学院班级:信安二班姓名:学号:前言密码学(Cryptology)是研究秘密通信的原理和破译秘密信息的方法的一门学科。
密码学的基本技术就是对数据进行一组可逆的数学变换,使未授权者不能理解它的真实含义。
密码学包括密码编码学(Cryptography)和密码分析学(Cryptanalyst)两个既对立又统一的主要分支学科。
研究密码变化的规律并用之于编制密码以保护信息安全的科学,称为密码编码学。
研究密码变化的规律并用之于密码以获取信息情报的科学,称为密码分析学,也叫密码破译学。
密码学在信息安全中占有非常重要的地位,能够为信息安全提供关键理论与技术。
密码学是一门古老而深奥的学问,按其发展进程,经历了古典密码和现代密码学两个阶段。
现代密码学(Modern Cryptology)通常被归类为理论数学的一个分支学科,主要以可靠的数学方法和理论为基础,为保证信息的机密性、完整性、可认证性、可控性、不可抵赖性等提供关键理论与技术。
古典密码算法实验在密码编码体制中有两种基本也是古老的编码体制一直沿用至今,它们是代替密码和置换密码,其历史悠久并且是现代密码体制的基本组成部分,在密码学中占有重要地位。
古典密码是密码学发展的一个阶段,也是近代密码学产生的渊源,一般把Shannon 在1949 年发表“保密系统的通信理论”之前的时期称为古典密码时期。
尽管古典密码大多比较简单,一般可用手工或机械方式实现,且都可用统计分析方法破译,目前已很少采用。
但是,古典密码所采用的代替技术和置换技术仍然是现代分组密码算法设计的基础,了解它们的设计原理,有助于理解、设计和分析现代密码。
一、实验目的通过编程实现经典的代替密码算法和置换密码,包括移位密码、维吉尼亚密码、周期置换密码、列置换密码,加深对代替技术的了解,为现代分组密码实验奠定基础。
二、实验原理代替(Substitution)是古典密码中基本的处理技巧,就是将明文字母由其他字母表中的字母替换的一种方法。
安全SnoWolF/百度B英俊制作课程名称现代密码学实验实验项目名称古典密码算法练习一 Caesar密码加密时每一个字母向前推移k位,例如当k=5时,置换表如表2所示。
表2 Caesar置换表于是对于明文:datasecurityhasevolvedrapidly经过加密后就可以得到密文:IFYFXJHZWNYDMFXJATQAJIWFUNIQD若令26个字母分别对应整数0~25,如表3所示。
表3 Caesar置换表则Caesar加密变换实际上是:c=(m+k)mod26其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,也称为密钥。
很容易得到相应的Caesar解密变换是:m=D(c)=(c–k)mod26例如明文:datasecurity对应的数据序列:301901842201781924当k=5时经过加密变换得到密文序列:852452397252213243对应的密文为:IFYFXJHZWNYD【实验步骤】本练习主机A、B为一组,C、D为一组,E、F为一组。
首先使用“快照X”恢复Windows系统环境。
一.手动完成Caesar密码(1) 在实验原理部分我们已经了解了Caesar密码的基本原理,那么请同学们写出当密钥k=3时,对应明文:data security has evolved rapidly的密文: GDWD VHFXULWB KDV HYROYHG UDSLGOB 。
(2) 进入实验平台,单击工具栏中的“密码工具”按钮,启动密码工具,在向导区点击“Caesar密码”。
在明文输入区输入明文:data security has evolved rapidly。
将密钥k调节到3,查看相应的密文,并与你手动加密的密文进行比较。
请根据密钥验证密文与明文对应关系是否正确。
二.Caesar加密(1) 进入“加密解密”|“Caesar密码”视图,在明文输入区输入明文(明文应为英文),单击“加密”按钮进行加密。