信息加密与解密实验1-1 经典密码——凯撒密码

合集下载

《信息安全》实验报告1 编程实现恺撒密码

《信息安全》实验报告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-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四、实验总结通过上机实践,对所学内容的某个知识点有了更深入的理解,写出一些体会、学习心得,甚至是改进意见。

凯撒加密实验报告(3篇)

凯撒加密实验报告(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. 加密效果通过实验验证,凯撒加密法能够有效地将明文转换为密文,且解密过程也能够将密文恢复为明文。

实验一 凯撒加密解密

实验一  凯撒加密解密

计算机安全基础上机实验报告学院年级专业班学生姓名学生学号实验一凯撒加密解密凯撒密码简介:恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。

例如,当偏移量是左移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)。

①已知c1 =wklv lv d errn,求p1。

(初级解密)问:两次使用凯撒,能否正确解密?(字符串用凯撒加密后的结果再用凯撒加密一次。

)②已知c1 =go kbo cdenoxdc,或c1 =zh duh vwxghqwv,求p1。

(中级解密)③已知c1 =rxwvlgh wkh eleoh, wkhvh vla zrugv duh wkh prvw idprxv lq doo wkh olwhudwxuh ri wkh zruog. wkhb zhuh vsrnhq eb kdpohw zkhq kh zdv wklqnlqj dorxg, dqg wkhb duh wkh prvw idprxv zrugv lq 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 lw eb vdblqj: "l wklqn, wkhuhiruh dp." ,求p1。

凯撒密码的实验报告

凯撒密码的实验报告

一、实验目的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”。

信息安全之凯撒密码

信息安全之凯撒密码

计科一班刘亮学号:2009221104210051实验一:凯撒密码一:实验目的理解和掌握凯撒密码的原理,可以简单解密。

二、实验原理凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。

例如,如果密匙是把明文字母的位数向后移动三位,那么明文字母B就变成了密文的E,依次类推,X将变成A,Y变成B,Z变成C,由此可见,位数就是凯撒密码加密和解密的密钥。

它是一种代换密码。

据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。

实验原理:将明文中的每个字母用引字符在字母表中后面第k个字母替代。

它的加密过程可以表示为下面函数:E(m)=(m+k) mod n其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。

同理可得解密过程。

实验内容:根据实验原理,自己创建明文信息,并选择一个密钥,编写循环移位密码算法的实现程序,实现加密和解密操作。

要求上述密码算法最后的实现程序提供加密和解密两个接口:int encrypt() 和int decrypt()。

当加密或者解密成功时返回CRYPT_OK, 失败时返回CRYPT_ERROR。

所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。

因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。

这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。

现今又叫“移位密码”,只不过移动的为数不一定是3位而已。

三、实验步骤密码术可以大致别分为两种,即易位和替换,当然也有两者结合的更复杂的方法。

在易位中字母不变,位置改变;替换中字母改变,位置不变。

尽管苏托尼厄斯仅提到三个位置的恺撒移位,但显然从1到25个位置的移位我们都可以使用,因此,为了使密码有更高的安全性,单字母替换密码就出现了。

作业1-凯撒密码的加密、解密和破解

作业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。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.谜语:What kind of cookies do birds like?(鸟儿喜欢什么种类的饼干?)
答案:2,7,14,2,14,11,0,19,4 2,7,8,17,15
2.谜语:What always ends everything?(什么总是能终结所有事情?)
答案:19,7,4 11,4,19,19,4,17
四、实验总结
通过上机实践,对所学内容的某个知识点有了更深入的理解,写出一些体会、学习心得,甚至是改进意见。

也可以写对界面设计、算法设计、代码编写、程序调试、程序改进等相关的收获、感悟。

五、附录(源程序清单,包含适当的注释)。

相关文档
最新文档