实验1-1 经典密码——凯撒密码
古典密码之凯撒密码
古典密码之凯撒密码
实验⽬的
理解掌握凯撒密码的设计原理以及编程实现
实验原理
凯撒密码(Caesar)是⼀种代换密码,他是经典的古典密码算法之⼀,它的基本思想是通过把字母移动⼀定的位数来实现加密和解密。
明⽂中的所有字母都在字母表上向后(或向前)按照⼀个固定数⽬进⾏偏移后被替换成密⽂。
例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。
由此可见,位数就是凯撒密码加密和解密的密钥。
实验内容
凯撒密码的编程实现
实验环境描述
1、学⽣机与实验室⽹络直连;
2、VPC1与实验室⽹络直连;
3、学⽣机与VPC1物理链路连通;
实验步骤
学⽣登录实验场景的操作
1、学⽣单击 “开始实验”进⼊实验场景,进⼊⽬标主机。
2.运⾏VC++6.0
3.”⽂件“-->“打开⼯作空间”打开c:tools51elab1001BmyCrySubstitude中的myCrySubstitude.dsw⼯程⽂件
4、查看代码并调试运⾏。
5、执⾏⽣成的myCrySubstitude.dsw⽂件
6、运⾏成功后的截图
7、理解凯撒密码实现机制。
《信息安全》实验报告1 编程实现恺撒密码
《信息安全》实验报告(1)实验名称:________________ 指导教师:___________ 完成日期:________________ 专 业:________________ 班 级:___________ 姓 名:________________一、实验目的:掌握典型的单表代换和多表代换的加密方法的实现细节。
二、实验内容:1、编程实现凯撒密码的加密和解密。
要求:既可以进行加密转换,也可以进行解密转换。
程序参考界面如右所示。
可以使用任何编程工具,能处理英文即可。
2、(选做)编程实现维吉尼亚密码的加密和解密。
要求:既可以进行加密转换,也可以进行解密转换。
程序参考界面如右所示。
可以使用任何编程工具,能处理英文即可。
三、程序设计说明:(实现步骤、算法设计思路、流程图等)凯撒密码加密算法:#include <stdio.h>int main(){char P[100];/*定义明文长度*/int K=3,i;printf("请输入明文:\n"); /*输入明文*/gets(P); /* 接受明文*/for(i=0;P[i]!='\0';i++) { /*逐个判断字母的大小*/if(P[i]>='a'&&P[i]<='z') /*小写字母 */P[i]=(P[i]-'a'+K)%26+'a';else if(P[i]>='A'&&P[i]<='Z')/*大写字母 */P[i]=(P[i]-'A'+K)%26+'A';else P[i]=' ';/*如果不是字母,转换为空格*/}printf("加密后 :\n%s\n",P);/*输出密文*/getch();return 0;}凯撒密码的实现 于泳海 2014-9-24 信息管理与信息系统 11级信本班 贾文丽四、实验结果与结论:(经调试正确的源程序和程序的运行结果)明文加密(密钥key=3):五、实验总结:(实验中遇到的问题及解决方法,心得体会等)在本次实验中,学会了凯撒密码的加密与解密。
信息安全实验-凯撒加密加法乘法变换
【实验目的】1. 简单加密方法的原理2. 凯撒密码的原理及程序的编写【实验设备与环境】(1)计算机(2)TC【实验步骤(内容)】凯撒密码就是单表代替密码,它的每一个明文字符都由其右边第3个(模26)字符代替(A由D代替,B由E代替,W由Z代替,X由A代替,Y由B代替,Z由C代替)。
(1)加法变换c≡ (m + k) mod 26其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,叫密钥。
比如:data security对应数据序列4,1,20,1,19,5,3,21,18,9,20,25,当k=5时,得密文序列9,6,25,6,24,10,8,0,23,14,25,4。
(2)乘同余码:移位或等间隔抽取码,明密文之间没有一一对应关系。
(容易产生多义性)。
变换按照同余乘法进行:加密变换:C=P⨯k (mod 26),解密变换:P=C÷k (mod 26) ,密钥:k源程序:#include<stdio.h>#include<conio.h>char sumjiami(char ch,int n){n=n%10;while(ch>='A'&&ch<='Z'){return ('A'+(ch-'A'+n)%26);}while(ch>='a'&&ch<='z'){return ('a'+(ch-'a'+n)%26); }while(ch>='0'&&ch<='9'){return ('0'+(ch-'0'+n)%10); }return ch;}char sumjiemi(char ch,int n) {static int k;k=n%10;while(ch>='A'&&ch<='Z'){ n=26-k;return ('A'+(ch-'A'+n)%26); }while(ch>='a'&&ch<='z'){n=26-k;return ('a'+(ch-'a'+n)%26); }while(ch>='0'&&ch<='9'){ n=10-k;return ('0'+(ch-'0'+n)%10); }return ch;char muljiami(char ch,int n) {if(n%2==0) n=n%10+1;else n=n%10;if(n%5==0) n=n+2;else n=n;while(ch>='A'&&ch<='Z'){return ('A'+((ch-'A')*n)%26); }while(ch>='a'&&ch<='z'){return ('a'+((ch-'a')*n)%26); }while(ch>='0'&&ch<='9'){return ('0'+((ch-'0')*n)%10); }return ch;}char muljiemi(char ch,int n) {int i;int k,h;if(n%2==0) n=n%10+1;else n=n%10;if(n%5==0) n=n+2;else n=n;while(ch>='A'&&ch<='Z')for(i=0;i<=n;i++){k=((ch-'A')+i*26)%n; if(k==0)h=((ch-'A')+i*26)/n; if(h>=0&&h<=26)return ('A'+h);}}while(ch>='a'&&ch<='z') {for(i=0;i<=n;i++){k=((ch-'a')+i*26)%n; if(k==0)h=((ch-'a')+i*26)/n; if(h>=0&&h<=26)return ('a'+h);}}while(ch>='0'&&ch<='9') {for(i=0;i<=n;i++){k=((ch-'0')+i*10)%n; if(k==0)h=((ch-'0')+i*10)/n;return ('0'+h);}}return ch;}void menu(){printf("\n========================================================="); printf("\n1.sumjiami the file");printf("\n2.muljiami the file");printf("\n3.sumjiemi the file");printf("\n4.muljiemi the file");printf("\n5.Quit\n");printf("=========================================================\n"); printf("Please select a item:");return;}void main(){int i,n;char ch0,ch1;FILE *in,*out;char infile[20],outfile[20];sleep(3);menu();ch0=getch();{if(ch0=='1'){clrscr();printf("\nPlease input the infile:"); scanf("%s",infile);if((in=fopen(infile,"r"))==NULL){printf("Can not open the infile!\n"); printf("Press any key to exit!\n");getch();exit(0);}printf("Please input the key:");scanf("%d",&n);printf("Please input the outfile:");scanf("%s",outfile);if((out=fopen(outfile,"w"))==NULL){printf("Can not open the outfile!\n"); printf("Press any key to exit!\n");fclose(in);getch();exit(0);}while(!feof(in)){fputc(sumjiami(fgetc(in),n),out);}fclose(in);fclose(out);sleep(1);}if(ch0=='2'){clrscr();printf("\nPlease input the infile:"); scanf("%s",infile);if((in=fopen(infile,"r"))==NULL){printf("Can not open the infile!\n"); printf("Press any key to exit!\n");getch();exit(0);}printf("Please input the key:");scanf("%d",&n);printf("Please input the outfile:");scanf("%s",outfile);if((out=fopen(outfile,"w"))==NULL){printf("Can not open the outfile!\n"); printf("Press any key to exit!\n");fclose(in);getch();exit(0);}while(!feof(in))fputc(muljiami(fgetc(in),n),out);}printf("\nmuljiami is over!\n");fclose(in);fclose(out);sleep(1);}if(ch0=='3'){clrscr();printf("\nPlease input the infile:"); scanf("%s",infile);if((in=fopen(infile,"r"))==NULL){printf("Can not open the infile!\n"); printf("Press any key to exit!\n");getch();exit(0);}printf("Please input the key:");scanf("%d",&n);printf("Please input the outfile:");scanf("%s",outfile);if((out=fopen(outfile,"w"))==NULL){printf("Can not open the outfile!\n"); printf("Press any key to exit!\n");fclose(in);getch();}while(!feof(in)){fputc(sumjiemi(fgetc(in),n),out);}printf("\nsumjiemi is over!\n");fclose(in);fclose(out);sleep(1);}if(ch0=='4'){clrscr();printf("\nPlease input the infile:"); scanf("%s",infile);if((in=fopen(infile,"r"))==NULL){printf("Can not open the infile!\n"); printf("Press any key to exit!\n");getch();exit(0);}printf("Please input the key:");scanf("%d",&n);printf("Please input the outfile:");scanf("%s",outfile);if((out=fopen(outfile,"w"))==NULL){printf("Can not open the outfile!\n");fclose(in);getch();exit(0);}while(!feof(in)){fputc(muljiemi(fgetc(in),n),out);}printf("\nmuljiemi is over!\n");fclose(in);fclose(out);sleep(1);}menu();ch0=getch();}clrscr();printf("\nGood Bye!\n");sleep(3);}运行:在C盘建立1.txt和2.txt,在文本1中输入以下信息:大写:ABCDEFGHIJKLMNOPKRSTUVWXYZ;小写:abcdefghijklmnopkrstuvwxyz;数字:0123456789.1、加法(sum)加密选择1加密运行结果:大写:FGHIJKLMNOPQRSTUPWXYZABCDE; 小写:fghijklmnopqrstupwxyzabcde;数字:5678901234.2、加法(sum)解密选择3加法解密运行结果:大写:ABCDEFGHIJKLMNOPKRSTUVWXYZ; 小写:abcdefghijklmnopkrstuvwxyz;数字:0123456789.3、乘法(mul)加密选择2乘法加密运行结果:大写:AHOVCJQXELSZGNUBSPWDKRYFMT; 小写:ahovcjqxelszgnubspwdkryfmt;数字:0741852963.4、乘法解密选择4乘法解密运行结果:大写:ABCDEFGHIJKLMNOPKRSTUVWXYZ;小写:abcdefghijklmnopkrstuvwxyz;数字:0123456789.5选择5退出。
凯撒加密实验报告(3篇)
第1篇一、实验目的通过本次实验,掌握凯撒加密法的原理和步骤,了解其在密码学中的应用,并能够使用Python语言实现凯撒加密和解密功能。
二、实验原理凯撒加密法是一种最简单且最广为人知的替换加密技术。
其基本原理是将明文中的每个字母按照字母表的顺序向后(或向前)移动一个固定数目的位置,从而生成密文。
例如,当偏移量为3时,明文中的A将变成D,B变成E,以此类推。
凯撒加密法的密钥是偏移量,它决定了加密过程中字母的移动方向和距离。
密钥的取值范围是1到25,表示将字母表向后移动1到25个位置。
三、实验内容1. 凯撒加密使用Python语言实现凯撒加密功能,具体步骤如下:- 定义一个函数,接收明文和密钥作为参数。
- 将明文中的每个字母按照字母表的顺序向后移动密钥指定的位置。
- 对于超出字母表范围的字母,将其转换回字母表的首部。
- 返回加密后的密文。
2. 凯撒解密使用Python语言实现凯撒解密功能,具体步骤如下:- 定义一个函数,接收密文和密钥作为参数。
- 将密文中的每个字母按照字母表的顺序向前移动密钥指定的位置。
- 对于超出字母表范围的字母,将其转换回字母表的首部。
- 返回解密后的明文。
3. 实验演示使用实验代码演示凯撒加密和解密过程,包括以下示例:- 示例1:明文为“The quick brown fox jumps over the lazy dog”,密钥为3,加密后的密文为“Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj”。
- 示例2:密文为“Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj”,密钥为3,解密后的明文为“The quick brown fox jumps over the lazy dog”。
四、实验结果与分析1. 加密效果通过实验验证,凯撒加密法能够有效地将明文转换为密文,且解密过程也能够将密文恢复为明文。
恺撒密码实验报告
实验二恺撒密码一、实验目的1. 掌握Java数组的基本操作。
2.掌握String类的生成、访问、修改等基本操作;3.掌握StringBuffer类的生成、访问、修改等基本操作。
4. 掌握 Pattern和Matcher对象的用法,以及正则表达式的应用二、实验要求1.正确地定义数组;2.正确对数组元素进行赋值、排序。
3.正确使用String类的方法;4.正确使用StringBuffer类的方法。
5. 正确书写正则表达式和使用Pattern和Matcher对象三、实验环境1.计算机一台;2.JDK、MyEclipse工具软件。
四、实验内容1.编写Application程序,实现凯撒密码,输入明文自动输出相应的密文。
五、实验步骤1.处理输入,每次读入一行。
2.将该行转换为字符数组,依次处理每个字符,英文字母转换成相应的密文,其他字符(如标点符号)的密文和明文相同。
3. 整体输出该行的密文。
4. 选作:允许用户扩展凯撒密码,指定字符替换的规则,即可以输入密钥六、凯撒密码介绍凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全。
他的原理很简单,说到底就是字母于字母之间的替换。
下面让我们看一个简单的例子:“baidu”用凯撒密码法加密后字符串变为“edlgx”,它的原理是什么呢?把“baidu”中的每一个字母按字母表顺序向后移3位,所得的结果就是刚才我们所看到的密文。
七、实验结果源代码为:package youximima;import java.util.*;public class Mima {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub//Scanner s =new Scanner(System.in);System.out.println("凯萨密码!");System.out.println("请输入一串字符!");int k=1;while(k==1){System.out.println("凯撒密码法加密后的字符串为:");Scanner s =new Scanner(System.in);String c=s.nextLine();int i=c.length();if(i<=10){char a[]=c.toCharArray();System.out.println(a);for(int j=0;j<a.length;j++){ if(a[j]>='a'&&a[j]<='z')if(a[j]=='x')a[j]='a';else if(a[j]=='y')a[j]='b';else if(a[j]=='z')a[j]='c';else a[j]+=3;if(a[j]>='A'&&a[j]<='Z')if(a[j]=='X')a[j]='A';else if(a[j]=='Y')a[j]='B';else if(a[j]=='Z')a[j]='C';else a[j]+=3;}System.out.print("原文为:");System.out.println(a);}else System.out.println("密码个数超过限制范围!");System.out.println("需要继续吗? 若继续请按1, 退出按0!");int m=s.nextInt();k=m;}System.out.println("欢迎下次使用!");}}结果为:凯萨密码!请输入一串字符!凯撒密码法加密后的字符串为:alk12@#xzalk12@#xz原文为:don12@#ac需要继续吗? 若继续请按1, 退出按0! 1凯撒密码法加密后的字符串为: sjkfJKJ%^YZ密码个数超过限制范围!需要继续吗? 若继续请按1, 退出按0! 1凯撒密码法加密后的字符串为:SFJ*8^knyzSFJ*8^knyz原文为:VIM*8^nqbc需要继续吗? 若继续请按1, 退出按0! 0欢迎下次使用!。
实验1-1经典密码——凯撒密码
实验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 SR2.谜语:What do you call a dog at the beach ?(你怎么称呼⼀只在海滩上的狗?)答案(移动4位密码):E LSX HSK实验三凯撒密码破解:1.凯撒密码破解密⽂:NGBKGMUUJZOSK实验四⽤数传递信息的⽅法破译以下的谜语:1.谜语:Where does Thursday come before Wednesday? (哪裡的星期四是⽐星期三还早的?)答案: 8,13,19,7,4,3,8,2,19,8,14,13,0,17,242.谜语:What always ends everything?(什么总是能终结所有事情?)答案:19,7,4 11,4,19,19,4,17 ,6四、实验总结通过上机实践,对所学内容的某个知识点有了更深⼊的理解,写出⼀些体会、学习⼼得,甚⾄是改进意见。
凯撒密码的实验报告
一、实验目的1. 理解凯撒密码的基本原理和加密过程。
2. 掌握凯撒密码的加密和解密方法。
3. 通过编程实现凯撒密码的加密和解密功能。
二、实验原理凯撒密码是一种最简单的替换密码,其加密和解密过程如下:1. 加密过程:将明文中的每个字母按照密钥k的值,向右移动k个位置,超出字母表的范围后,从字母表头部开始循环。
例如,当密钥k=3时,字母A将被替换成D,B变成E,以此类推。
2. 解密过程:将密文中的每个字母按照密钥k的值,向左移动k个位置,超出字母表的范围后,从字母表头部开始循环。
例如,当密钥k=3时,密文中的字母D将被替换成A,E变成B,以此类推。
三、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发环境:PyCharm四、实验步骤1. 编写凯撒密码加密函数```pythondef caesar_encrypt(plaintext, key):encrypted_text = ""for char in plaintext:if char.isalpha(): # 判断字符是否为字母offset = 65 if char.isupper() else 97encrypted_text += chr((ord(char) - offset + key) % 26 + offset)else:encrypted_text += charreturn encrypted_text```2. 编写凯撒密码解密函数```pythondef caesar_decrypt(ciphertext, key):decrypted_text = ""for char in ciphertext:if char.isalpha(): # 判断字符是否为字母offset = 65 if char.isupper() else 97decrypted_text += chr((ord(char) - offset - key) % 26 + offset)else:decrypted_text += charreturn decrypted_text```3. 编写主函数,实现用户交互```pythondef main():plaintext = input("请输入明文:")key = int(input("请输入密钥(数字):"))encrypted_text = caesar_encrypt(plaintext, key)print("加密后的密文:", encrypted_text)decrypted_text = caesar_decrypt(encrypted_text, key)print("解密后的明文:", decrypted_text)if __name__ == "__main__":main()```五、实验结果与分析1. 实验结果当输入明文“HELLO WORLD”和密钥3时,程序输出加密后的密文“KHOOR ZRUOG”,解密后的明文为“HELLO WORLD”。
作业1-凯撒密码的加密、解密和破解
作业1-凯撒密码的加密、解密和破解光信学院《网络信息安全》实验报告1班级:学号:姓名:实验时间:年月日指导教师:陈顺凡一.实验目的理解网络信息安全的基本原理,掌握基本密码技术的原理及编程能力。
二.实验原理和内容[凯撒介绍]凯撒密码(kaiser)是罗马扩张时期朱利斯"凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。
它将字母表中的字母移动一定位置而实现加密。
[加密原理]凯撒密码的加密算法极其简单。
其加密过程如下:在这里,我们做此约定:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。
凯撒密码的加密过程可记为如下一个变换:c≡m+k mod n (其中n为基本字符个数)同样,解密过程可表示为:m≡c-k mod n (其中n为基本字符个数)对于计算机而言,n可取256或128,m、k、c均为一个8bit 的二进制数。
显然,这种加密算法极不安全,即使采用穷举法,最多也只要255次即可破译。
当然,究其本身而言,仍然是一个单表置换,因此,频率分析法对其仍是有效的。
.[破解原理]一篇包含字符的英文文章,其各ASCII码字符出现,都有一定的频率,下面是对Google上随意搜索到的英文文章进行分析的结果,见表:QUOTE:====================================== =========== FileName : 01.txt[1] 32: times:204[2] 101:e times:134[3] 116:t times:91[4] 105:i times:87[5] 111:o times:77[6] 108:l times:75[7] 97:a times:75[8] 110:n times:69[9] 10:times:67[10] 115:s times:63====================================== =========== FileName : php.si.source.txt[1] 32: times:576[2] 101:e times:162[3] 115:s times:153[4] 110:n times:141[5] 114:r times:138[6] 105:i times:135[7] 10:times:134[8] 116:t times:129[9] 42:* times:116[10] 111:o times:103====================================== =========== FileName : work.txt[1] 32: times:51322[2] 101:e times:30657[3] 116:t times:23685[4] 97:a times:19038[5] 111:o times:17886[6] 105:i times:16156[7] 110:n times:15633[8] 114:r times:15317[9] 115:s times:15226[10] 104:h times:12191====================================== =========== FileName : 02.txt[1] 32: times:299[2] 101:e times:217[3] 110:n times:136[4] 105:i times:133[5] 111:o times:124[6] 116:t times:116[7] 97:a times:110[8] 115:s times:98[9] 114:r times:92[10] 108:l times:82====================================== =========== FileName : 03.txt[1] 45:- times:404[2] 32: times:394[3] 101:e times:237[4] 116:t times:196[5] 114:r times:173[6] 97:a times:163[7] 105:i times:161[8] 110:n times:153[9] 111:o times:142[10] 115:s times:129====================================== =========== FileName : 04.txt[1] 32: times:326[2] 101:e times:179[3] 116:t times:106[4] 105:i times:101[5] 111:o times:96[6] 110:n times:94[7] 97:a times:92[8] 115:s times:78[9] 100:d times:61[10] 114:r times:60====================================== =========== FileName : 05.txt[1] 32: times:441[2] 101:e times:191[3] 111:o times:151[4] 116:t times:120[5] 97:a times:112[6] 110:n times:108[7] 105:i times:91[8] 114:r times:84[9] 117:u times:79[10] 115:s times:79有此分析可知,一篇英文文章中,出现较高频率的两个字符是' ' (空格) 和 'e',而且它们的ASCII码分别是32和101,差值是69。
古典密码实验报告
古典密码实验报告一、实验目的本次古典密码实验的主要目的是深入了解和掌握几种常见的古典密码技术,包括恺撒密码、栅栏密码、维吉尼亚密码等,并通过实际操作和分析,探究其加密和解密的原理与过程,以及这些密码技术的安全性和局限性。
二、实验环境本次实验在个人计算机上进行,使用了 Python 编程语言作为主要的实验工具。
同时,还借助了一些在线密码分析工具和网站,以辅助对密码的分析和破解。
三、实验原理(一)恺撒密码恺撒密码是一种简单的替换密码,通过将明文中的每个字母按照一定的偏移量进行替换来实现加密。
例如,偏移量为 3 时,A 被替换为D,B 被替换为 E,以此类推。
(二)栅栏密码栅栏密码是一种置换密码,将明文按照一定的栏数进行分组,然后按照一定的顺序读取分组中的字母来得到密文。
(三)维吉尼亚密码维吉尼亚密码是一种多表替换密码,使用一个密钥字符串来决定每个明文字母的替换字母。
密钥字符串被重复使用,直到覆盖整个明文。
四、实验步骤(一)恺撒密码实验1、选择一段明文,例如:“Hello World”。
2、设定偏移量,假设为 5。
3、按照恺撒密码的加密规则,对明文中的每个字母进行偏移替换,得到密文。
4、尝试对密文进行解密,通过反向偏移来恢复明文。
(二)栅栏密码实验1、选取一段明文,比如:“This is a secret message”。
2、确定栏数,假设为 3。
3、将明文按照栏数进行分组,并按照特定顺序读取字母,得到密文。
4、尝试通过分析密文的规律,恢复明文。
(三)维吉尼亚密码实验1、选择明文,例如:“Encryption and Decryption”。
2、设定密钥,如“KEY”。
3、根据维吉尼亚密码的加密规则,使用密钥对明文进行加密。
4、尝试对生成的密文进行破解,分析密钥的长度和可能的内容。
五、实验结果与分析(一)恺撒密码1、加密结果:明文“Hello World”在偏移量为 5 的情况下,加密得到的密文为“Mjqqt Btwqi”。
凯撒密码编程实验报告(3篇)
第1篇一、实验目的1. 理解凯撒密码的基本原理和加密解密过程;2. 掌握C语言编程实现凯撒密码;3. 提高编程能力和密码学基础知识。
二、实验环境1. 软件工具:Visual Studio 20192. 操作系统:Windows 10三、实验内容1. 凯撒密码原理介绍凯撒密码是一种最简单的移位密码,通过将字母表中的每个字母向前或向后移动固定数量位置来进行加密和解密。
例如,密钥为3时,A会被加密为D,B会被加密为E,以此类推。
解密过程是将密文中的每个字母向前或向后移动相同的位数,恢复出明文。
2. C语言实现凯撒密码(1)加密函数```cvoid caesar_encrypt(char input, char output, int key) {int i = 0;while (input[i] != '\0') {if (input[i] >= 'A' && input[i] <= 'Z') {output[i] = ((input[i] - 'A' + key) % 26) + 'A';} else if (input[i] >= 'a' && input[i] <= 'z') {output[i] = ((input[i] - 'a' + key) % 26) + 'a';} else {output[i] = input[i];}i++;}output[i] = '\0';}```(2)解密函数```cvoid caesar_decrypt(char input, char output, int key) {int i = 0;while (input[i] != '\0') {if (input[i] >= 'A' && input[i] <= 'Z') {output[i] = ((input[i] - 'A' - key + 26) % 26) + 'A'; } else if (input[i] >= 'a' && input[i] <= 'z') {output[i] = ((input[i] - 'a' - key + 26) % 26) + 'a'; } else {output[i] = input[i];}i++;}output[i] = '\0';}```3. 测试程序```cinclude <stdio.h>include <string.h>void caesar_encrypt(char input, char output, int key) { // 加密函数}void caesar_decrypt(char input, char output, int key) { // 解密函数}int main() {char input[100], output[100];int key;printf("请输入密钥(1-25): ");scanf("%d", &key);printf("请输入明文: ");scanf("%s", input);caesar_encrypt(input, output, key);printf("加密结果: %s\n", output);caesar_decrypt(output, input, key);printf("解密结果: %s\n", input);return 0;}```四、实验结果与分析1. 实验结果(1)输入密钥为3,明文为"hello world",加密结果为"kiho world",解密结果为"hello world";(2)输入密钥为5,明文为"goodbye world",加密结果为"jvvhv world",解密结果为"goodbye world"。
凯撒密码的加密和解密
密码的原理与实现一、基础知识介绍凯撒密码的历史凯撒密码(caeser)是罗马扩张时期朱利斯•凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。
它将字母表中的字母移动一定位置而实现加密。
古罗马随笔作家修托尼厄斯在他的作品中披露,凯撒常用一种“密表”给他的朋友写信。
这里所说的密表,在密码学上称为“凯撒密表”。
用现代的眼光看,凯撒密表是一种相当简单的加密变换,就是把明文中的每一个字母用它在字母表上位置后面的第三个字母代替。
古罗马文字就是现在所称的拉丁文,其字母就是我们从英语中熟知的那26个拉丁字母。
因此,凯撒密表就是用d代a,用e代b,……,用z代w。
这些代替规则也可用一张表格来表示,所以叫“密表”。
当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
基本原理在密码学中存在着各种各样的置换方式,但所有不同的置换方式都包含2个相同的元素。
密钥和协议(算法)。
凯撒密码的密钥是3,算法是将普通字母表中的字母用密钥对应的字母替换。
置换加密的优点就在于它易于实施却难于破解. 发送方和接收方很容易事先商量好一个密钥,然后通过密钥从明文中生成密文,即是敌人若获取密文,通过密文直接猜测其代表的意义,在实践中是不可能的。
凯撒密码的加密算法极其简单。
其加密过程如下:在这里,我们做此约定:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里不妨假设k1=k2,记为k)。
凯撒密码的加密过程可记为如下一个变换:c≡m+k mod n (其中n为基本字符个数)同样,解密过程可表示为:m≡c+k mod n (其中n为基本字符个数)对于计算机而言,n可取256或128,m、k、c均为一个8bit的二进制数。
显然,这种加密算法极不安全,即使采用穷举法,最多也只要255次即可破译。
当然,究其本身而言,仍然是一个单表置换,因此,频率分析法对其仍是有效的。
凯撒密码的实验报告
凯撒密码的实验报告凯撒密码的实验报告引言:密码学作为一门古老而神秘的学科,一直以来都吸引着人们的兴趣。
而凯撒密码作为密码学的基础,其简单而又经典的加密方式,更是备受研究者和爱好者的关注。
本实验旨在通过对凯撒密码的实践应用,深入了解其原理和加密解密过程。
一、凯撒密码的原理凯撒密码,又称移位密码,是一种最早被记录的密码系统。
其基本原理是通过将明文中的每个字母按照一定的规则进行移位,从而得到密文。
在凯撒密码中,移位的规则是将字母按照顺序向后移动固定的位置,例如向后移动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. 凯撒密码的应用范围有限,适用于一些简单的信息加密场景,但在现代密码学中已经不再被广泛使用。
五、实验总结通过本次实验,我们对凯撒密码有了更深入的了解。
凯撒密码作为密码学的基础,为后来的密码学研究奠定了基础。
虽然凯撒密码的加密强度较低,但其简单易懂的原理和操作方式,使其成为初学密码学的入门工具。
凯撒密码实验报告
凯撒密码实验报告凯撒密码实验报告引言:密码学作为一门古老而又神秘的学科,一直以来都吸引着人们的兴趣。
其中,凯撒密码是最为经典的一种密码算法,它以罗马帝国的大军统帅凯撒为名,被广泛应用于古代的军事通信中。
本实验旨在通过实际操作,深入了解凯撒密码的原理和加密解密过程。
一、凯撒密码的原理凯撒密码是一种简单的替换密码,它采用了位移的方式进行加密和解密。
具体而言,凯撒密码将明文中的每个字母按照字母表中的顺序向后(或向前)移动固定的位数,从而得到密文。
例如,当位移数为3时,明文中的字母A将被替换为D,B将被替换为E,依此类推。
二、实验步骤1. 设定位移数:在实验开始前,我们需要先设定一个位移数。
为了方便比较,我们选择了位移数为3的凯撒密码。
2. 加密明文:首先,我们选择一段明文进行加密。
假设我们选择的明文是“HELLO WORLD”。
按照凯撒密码的原理,我们将每个字母向后移动3位,得到密文“KHOOR ZRUOG”。
3. 解密密文:为了验证凯撒密码的可逆性,我们将刚才得到的密文“KHOOR ZRUOG”进行解密。
按照凯撒密码的原理,我们将每个字母向前移动3位,得到明文“HELLO WORLD”。
三、实验结果与分析通过实验,我们成功地加密了明文“HELLO WORLD”,并且通过解密密文得到了原始的明文。
这表明凯撒密码具有可逆性,加密和解密过程是相互对应的。
然而,凯撒密码也存在一些缺点。
首先,由于位移数是固定的,所以凯撒密码的密钥空间非常有限,容易受到暴力破解的攻击。
其次,凯撒密码没有考虑字母的频率分布,因此在加密后的密文中,字母的频率分布与明文相比没有变化,这也给破译者提供了线索。
为了增强凯撒密码的安全性,可以采用多次位移的方式,即多次对明文进行加密。
例如,我们可以先按照位移数3加密明文,再按照位移数5加密上一步得到的密文,这样就可以得到更复杂的密文,提高了密码的安全性。
四、实验总结凯撒密码作为密码学的经典算法,虽然在现代密码学中已经被更加安全的算法所取代,但它仍然具有重要的历史意义和教育价值。
成教实验1-凯撒密码实现
实验1 凯撒加解密算法实现
实验名称:Linux 操作系统安全
实验类型: 验证性实验
学时:2
适用对象: 信息安全
一. 实验目的
1. 了解凯撒加密、解密过程,掌握其工作原理;
2.编写凯撒加密、解密编码程序
二.实验原理
凯撒加密参考
♦50B.C,Julius Ceasar 使用了一种简单的替换密码- ——后被人称为恺撒密码(Caesar cipher )
♦首先被应用于军事上(cf Gallic Wars)
♦替换方法,每个字母用其后的第三个字母替换
♦Caesar cipher 可以描述如下:
♦Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ
♦ Cipher: DEFGHIJKLMNOPQRSTUVWXYZABC
♦一般形式,可以把Caesar cipher 中字母移动的位数由3变为1-25中的任何一个三.实验要求
1)分别实现对文字和对文件的加密和解密
2)密钥由用户输入;
总结实验过程:方案、编程、调试、结果、分析、结论。
四.实验环境
Windws9x/NT/2000/XP
编程工具
Java
Visual C++ 6.0
五、实验报告要求
根据上面介绍的实验要求,编程实现,并给出分析报告。
古典密码实验报告
古典密码实验报告古典密码实验报告一、引言密码学作为一门古老而又神秘的学科,一直以来都吸引着人们的兴趣。
在古代,人们为了保护重要信息的安全,发明了各种各样的古典密码。
本实验旨在通过实际操作,了解并研究几种古典密码的原理和加密解密过程。
二、凯撒密码凯撒密码是最简单的一种古典密码,它的原理是通过将明文中的每个字母按照一定的偏移量进行替换,从而得到密文。
在实验中,我们选择了一个简短的明文“HELLO”,并将其加密成了密文“KHOOR”。
通过对比明文和密文,我们可以发现,凯撒密码的加密过程非常简单,只需要将明文中的每个字母按照一定的偏移量进行替换即可。
然而,凯撒密码的安全性非常低,因为偏移量很容易被破解。
三、维吉尼亚密码维吉尼亚密码是一种基于凯撒密码的改进密码,它引入了一个密钥序列,通过不同的偏移量来加密明文。
在实验中,我们选择了一个较长的明文“CRYPTOGRAPHY”,并使用密钥序列“KEY”进行加密。
维吉尼亚密码的加密过程相对复杂一些,需要根据密钥序列的长度,对明文中的每个字母选择不同的偏移量进行替换。
通过使用密钥序列“KEY”,我们将明文“CRYPTOGRAPHY”加密成了密文“DWUMQVQWUH”.维吉尼亚密码相较于凯撒密码,提高了加密的复杂度和安全性。
然而,它的密钥序列仍然可能被破解,因此在实际应用中需要更复杂的密码算法。
四、栅栏密码栅栏密码是一种将明文按照一定规则排列后再读取的密码算法。
在实验中,我们选择了一个较短的明文“HELLO WORLD”,并使用栅栏数为3进行加密。
栅栏密码的加密过程非常简单,只需要将明文按照栅栏数进行排列,然后按照从上到下、从左到右的顺序读取即可。
通过使用栅栏数为3,我们将明文“HELLO WORLD”加密成了密文“HWEOLLLROD”.栅栏密码的加密过程简单快捷,但是它的安全性也很低。
由于栅栏数有限,密文很容易被破解。
五、结论通过本次实验,我们对凯撒密码、维吉尼亚密码和栅栏密码进行了实际操作和研究。
凯撒加密解密上机实验报告
计算机安全基础凯撒加密解密上机实验报告学院年级专业班学生姓名学生学号实验一凯撒加密解密凯撒密码简介:恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。
例如,当偏移量是左移3的时候(解密时的密钥就是3):明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。
需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。
例如:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ源代码:#include "kaisa.h"using namespace std;void Kaisa::setI(){cout << "\n请输入加密密码:";cin >> i;}void Kaisa::jiami(){char a, b, c;cout << "\n请输入明文:\t";cin >> a;b = char('z' - i%26);c = char('Z' - i%26);cout << "\n密文是:\t";while(a != '\n'){if((a <= 'z' && a >= 'a') || ( a <= 'Z' && a >='A')){ if((a <= b && a >= 'a') || ( a <= c && a >='A'))cout << char(a + i%26);if(a > c && a <= 'Z')cout << char(a + i%26 - 26);if(a > b && a <= 'z')cout << char(a + i%26 - 26);if(a == ' ')cout << " ";}elsecout << a;a = cin.get();}cout << endl;}void Kaisa::setX(){cout << "\n请输入解密密码:";cin >> i;}void Kaisa::jiemi(){char a, b, c;cout << "\n请输入密文:\t";cin >> a;b = char('a' + i%26);c = char('A' + i%26);cout << "\n明文是:\t";while(a != '\n'){if((a <= 'z' && a >= 'a') || ( a <= 'Z' && a >='A')) { if((a <= 'z' && a >= b) || ( a <= 'Z' && a >= c)) cout << char(a - i%26);if(a >= 'a' && a < b)cout << char(a - i%26 + 26);if(a >= 'A' && a < c)cout << char(a - i%26 + 26);if(a == ' ')cout << " ";}elsecout << a;a = cin.get();}cout << endl;}int main(){while(1){int t;cout << "1.加密" << endl<< "2.解密" << endl<<"按其他键退出"<<endl<< "选择:";cin >> t;Kaisa kaisa;if(t == 1){kaisa.setI();kaisa.jiami();cout<<"加密完成\n"<<endl;}else if(t == 2){kaisa.setX();kaisa.jiemi();cout<<"解密完成\n"<<endl;}elsereturn 0;}}测试:密钥:4,明文:abcdefg 实验结果:实验二DES加密解密加密原理:DES 使用一个56 位的密钥以及附加的8 位奇偶校验位,产生最大64 位的分组大小。
信息安全古典密码之凯撒密码
《网络攻击与防御》实验报告课程名称:信息安全技术实验名称:古典密码之凯撒密码指导教师:学生姓名:组号:实验日期:实验地点:实验成绩:一计算机科学与技术学院计算机系网络教研室制一、实验目的(1)编程实现凯撒加密、解密算法,理解密码学基础知识,初步建立密码学思维方式。
(2)通过不断增加凯撒解密难度,理解唯密文解密,提高解密性能。
实验环境操作系统:Windows 10操作系统软件工具:C++语言编译环境三、实验内容与实验要求(1)在允许输入密码条件下,编程实现凯撒密码加解密解密。
要求:①从一文本文件读入英文文章(明文或密文)。
②对读入内容加密或解密后写入另一文本文件。
(2)在不允许输入密码条件下,编程实现解密凯撒密码加密密文。
要求绘制三种情况下解密程序流程图,说明不同解密程序存在的不足。
程序需要计算、显示解密使用时间(单位:ms) o①已知cl =wk 1 v lv d errn,求pl。
(初级解密)问:两次使用凯撒,能否正确解密?(字符串用凯撒加密后的结果再用凯撒加密一次。
)②已知cl =go kbo cdenoxdc, 或cl =zh duh vwxghqwv, 求pl。
(中级解密)③已知cl =rxwvlgh wkh eleoh, wkhvh via zrugv duh wkh prvw idprxv Iq doo wkh olwhudwxuh ri wkh zruog. wkhb zhuh vsrnhq eb kdpohw zkhq kh zdv wklqnlqj dorxg, dqg wkhb duh wkh prvw idprxv zrugv Iq vkdnhvshduh ehfdxvh kdpohw zdv vshdnlqj qrw rqob iru klpvhoi exw dovr iru hyhub wklqnlqj pdq dqg zrpdq. wr eh ru qrw wr eh, wr olyh ru qrw wr olyh, wr olyh ulfkob dqg dexqgdqwob dqg hdjhuob, ru wr olyh gxoob dqg phdqob dqg vfdufhob. d sklorvrskhu rqfh zdqwhg wr nqrz zkhwkhu kh zdv dolyh ru qrw, zklfk lv d jrrg txhvwlrq iru hyhubrqh wr sxw wr klpvhoi rffdvlrqdoob. kh dqvzhuhg Iw eb vdblqj: 〃1 wklqn, wkhuhiruh dp. 〃,求pl。
密码学-实验一古典密码算法
第1页 实验一 古典密码算法1、目的使学生认识理解古典密码算法:凯撒密码算法,维吉尼亚密码算法。
2、环境PC 1 PC 1 台、安装软件台、安装软件VC60VC60、、JBuilder8JBuilder8、、Delphi7Delphi7。
3、预备知识 1.凯撒密码的过程: 表1:字母编码表0 1 2 3 4 5 6 7 8 9 10 11 12a b c d e f g h i j k l m13 14 15 16 17 18 19 20 21 22 23 24 25 n o p q r s t u v w x y z 再用配对字母取代信息里的原始字母位移加密法(shift cipher):模数计算。
算。
E E k (x)=(x+k)mod 26(x)=(x+k)mod 26,,D k (y)=(y (y)=(y ––k)mod 26 如:如:k=5;k=5;k=5;““hello world hello world””加密为:加密为:mjqqt mjqqt ….2.维吉尼来密码维吉尼来方阵:(不区分大小写)数学表达式:[]([][])%26;C i P i K i =+ 验证:验证:V[0V[0V[0,,0]=00]=0;;V[25V[25,,25]=24 V[13V[13,,12]=25 0 1 2 3 4 5 6 7 8 9 10 11 12a b c d e f g h i j k l m 13 14 15 16 17 18 19 20 21 22 23 24 25 n o p q r s t u v w x y z 解密:[]([][])%26;P i C i K i =-如:如:k=k=k=””BEST BEST””;“HELLO WORLD WORLD”加密为:”加密为:”加密为:IIDE IIDE …. 4字符一组:字符一组: hell OWOR LDBEST BEST BEST 以第一行字母为列标,2行为行标(为行标(B B ,H )=I =I;; 解密:IIDEBEST BEST,,明文字母是B 行字母为I 的列号H ,或B 列=I 的行H 。
凯撒密码实验
凯撒密码实验一、实验目的通过实验熟练掌握凯撒密码算法,学会凯撒密码算法程序设计。
二、实验环境软件工具:Visual C++ 6.0操作系统:windows xp三、实验思想在密码学中存在着各种各样的置换方式,但所有不同的置换方式都包含2个相同的元素。
密钥和协议(算法)。
凯撒密码的密钥是3,算法是将普通字母表中的字母用密钥对应的字母替换。
置换加密的优点就在于它易于实施却难于破解. 发送方和接收方很容易事先商量好一个密钥,然后通过密钥从明文中生成密文,即是敌人若获取密文,通过密文直接猜测其代表的意义,在实践中是不可能的。
凯撒密码的加密算法极其简单。
其加密过程如下:在这里,我们做此约定:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里不妨假设k1=k2,记为k)。
凯撒密码的加密过程可记为如下一个变换:c?m+k mod n (其中n为基本字符个数) 同样,解密过程可表示为:m?c+k mod n (其中n为基本字符个数) 四、实验数据(源代码)#include <stdio.h>#include <stdlib.h>#include <string.h>void table(char *keyword) //筛选密钥(去重复去空格){int i,j,k;for(i=0;*(keyword+i)!='\0';i++){for(j=i;*(keyword+j)!='\0';j++){if(i!=j)if(*(keyword+i)==*(keyword+j)||*(keyword+j)==' ') {for(k=j;*(keyword+k)!='\0';k++)*(keyword+k)=*(keyword+k+1);j--;}}}}void newTab(char *keyword) //生成密钥表{char ch;int i;int t;for(t=0;*(keyword+t)!='\0';t++);for(ch='a';ch<='z';ch++){for(i=0;*(keyword+i)!=ch;i++){if(*(keyword+i)=='\0'){*(keyword+t)=ch;t++;break;}}}*(keyword+t)='\0';}char *Ciphertext(char *keyword,char *Plaintext) //按密码表加密 { char ch;int i,j;for(i=0;*(Plaintext+i)!='\0';i++){for(ch='a',j=0;ch<='z';ch++,j++){if(*(Plaintext+i)==ch){*(Plaintext+i)=*(keyword+j);break;}}}return Plaintext;}char *Decrypt(char *keyword,char *Plaintext) //解密 { char ch;int i,j;for(i=0;*(Plaintext+i)!='\0';i++){for(ch='a',j=0;*(keyword+j)!='\0';ch++,j++){if(*(Plaintext+i)==*(keyword+j)){*(Plaintext+i)=ch;break;}}}return Plaintext;}void main(){char *keyword,*Plaintext,*tmp=NULL;keyword=(char*)malloc(sizeof(char));Plaintext=(char*)malloc(sizeof(char));printf("Input key word:"); //输入欲用密钥gets(keyword);printf("Input Plaintext:"); //输入要转换的明文gets(Plaintext);table(keyword); //去空格去重复newTab(keyword); //生成密码表tmp=Ciphertext(keyword,Plaintext); //对应着密码表生成密文puts(tmp); //输出密文puts(Decrypt(keyword,tmp)); //解密输出}五、实验心得通过本次实验,将凯撒密码算法的理论应用到实践中来,利用C++编程实现了凯撒密码算法的加密过程,将理论与实践结合起来,加深了课本上凯撒密码算法理论的理解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机实验报告
一、实验目的:
本次上机实践所涉及并要求掌握的知识点。
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.谜语:Where does Thursday come before Wednesday? (哪裡的星期四是比星期三还早的?)
答案: 8,13,19,7,4,3,8,2,19,8,14,13,0,17,24
2.谜语:What always ends everything?(什么总是能终结所有事情?)
答案:19,7,4 11,4,19,19,4,17 ,6
四、实验总结
通过上机实践,对所学内容的某个知识点有了更深入的理解,写出一些体会、
学习心得,甚至是改进意见。
也可以写对界面设计、算法设计、代码编写、程序调试、程序改进等相关的
收获、感悟。
五、附录(源程序清单,包含适当的注释)。