古典密码实验报告
- 格式:doc
- 大小:67.50 KB
- 文档页数:15
古典加密实验报告古典密码算法一、实验目的学习常见的古典密码学算法,通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。
二、实验要求分析替代密码算法和置换密码算法的功能需求,详细设计实现替代密码算法和置换密码算法的数据结构和流程,给出测试用例和测试步骤,得出测试和结论。
替代密码算法和置换密码算法的实现程序必须提供加密和解密两个接口:int encrypt()和int decrypt()。
当加密或者解密成功时返回CRYPT_OK,失败时返回CRYPT_ERROR。
三、实验原理古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。
它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。
下面介绍两种算法:替代密码和置换密码。
1.替代密码的原理是使用替代法进行加密,就是将明文由其它的字母、数字或符合所代替后形成密文。
这里每个明文字母对应的密文字母可能是一个,也可能是多个。
接收者对密文进行逆向替换即可得到明文。
2.置换密码算法的原理是不改变明文字符,而是按照某一规则重新排列消息中的比特或字符顺序,才而实现明文信息的加密。
置换密码有时又称为换位密码。
我实验过程中替代密码是单表替换,用字母的下一个字母代替:for(j = 0; j < i; j++){if(96 < Mingwen[j]&&Mingwen[j] < 123){Miwen[j] = 'a' + (Mingwen[j] - 'a' + 1) % 26;}else{Miwen[j] = 'A' + (Mingwen[j] - 'A' + 1) % 26;}}置换加密主要是对密钥进行整理,还有就是动态分配二维数组,将明文和密文填充置的过程,换密码关键代码如下:for(a = 0; a < k; a++){for(b = 0; b < hang; b++){Miwen[i] = p[b][ord[j]];i++;}j++;}for(a = 0; a < 26; a++){for(b = 0; b < k; b++){if(key1[b] == alphatable[a]){ord[b] = ind++;}}}具体加密见下图:详细加密代码见附件。
古典密码的实验报告古典密码的实验报告引言:密码学作为一门古老而又神秘的学科,一直以来都吸引着人们的兴趣。
在古代,人们用各种各样的密码来保护重要信息的安全性。
本实验旨在通过实际操作,探索古典密码的加密原理和破解方法,从而深入了解密码学的基本概念和应用。
一、凯撒密码凯撒密码,又称移位密码,是最简单的一种古典密码。
其原理是通过将明文中的每个字母按照一定的规则进行移位,得到密文。
在本实验中,我们选择了一个简单的凯撒密码进行破解。
首先,我们选择了一段明文:“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和解密函数,成功实现了单表代替密码的加密和解密过程。
哈尔滨工程大学实验报告实验名称:古典密码算法班级:学号:姓名:实验时间:2014年4月成绩:指导教师:实验室名称:哈尔滨工程大学实验室与资产管理处制一、实验名称古典密码算法二、实验目的通过编程实现经典的代替密码算法和置换密码,包括移位密码、维吉尼亚密码、周期置换密码、列置换密码,加深对代替技术的了解,为现代分组密码实验奠定基础。
三、实验环境(实验所使用的器件、仪器设备名称及规格)运行Windows 或Linux 操作系统的PC 机,具有gcc(Linux)、VC(Windows)等C 语言编译环境。
四、实验任务及其要求(1)根据实验原理部分对移位密码的介绍,自己创建明文信息,并选择一个密钥,编写移位密码的实现程序,实现加密和解密操作。
(2)根据实验原理部分对维吉尼亚密码的介绍,自己创建明文信息,并选择一个密钥,编写维吉尼亚密码的实现程序,实现加密和解密操作。
(3)根据实验原理部分对周期置换密码的介绍,自己创建明文信息,并选择一个密钥,编写周期置换密码的实现程序,实现加密和解密操作。
(4)根据实验原理部分对列置换密码的介绍,自己创建明文信息,并选择一个密钥,编写列置换密码的实现程序,实现加密和解密操作。
五、实验设计(包括原理图、真值表、分析及简化过程、卡诺图、源代码等)1.移位密码移位密码(Shift Cipher)是一种典型的单表替代密码,也称为加法密码。
移位密码的加密方法就是将明文中的每个字母用其在字母表后面的第k 个字母替代,它的加密过程可以表示为: c = (m + k) mod n其中,m 为明文字母在字母表中的位置数;n 为字母表中的字母总数;k 为密钥;c 为密文字母在字母表中对应的位置数。
相应的,移位密码的解密过程可以表示为:m = (c - k) mod n移位密码的一个典型代表就是凯撒密码(Ceaser Cipher),它是k=3 时的移位密码。
使用英文字母表的撒密码的加(解)密可以表示为:m = (c + 3) mod 26 m = (c - 3) mod 26,例如,明文:attacks at nine am密钥:3加密:将明文分组对每一个密文字母,依英文字母表,用其右的第 3 个字母代替密文:dwwdfnv dw qlqh dp另外,使用凯撒密码加密后的密文“dwwdfnvdwilyhsp”,其明文为“attacks at five pm”。
安全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密码”视图,在明文输入区输入明文(明文应为英文),单击“加密”按钮进行加密。
第1篇一、实验背景密码学是一门研究信息加密与解密的学科,它广泛应用于信息安全领域。
为了更好地理解密码学的基本原理和算法,我们选择了实验吧平台上的密码学实验进行学习。
本次实验旨在通过实际操作,加深对古典密码、对称密码和不对称密码等密码学基本概念的理解,提高密码学应用能力。
二、实验目的1. 理解并掌握古典密码的基本原理和算法;2. 掌握对称密码和不对称密码的基本原理和算法;3. 通过实验操作,提高密码学应用能力;4. 培养团队协作和解决问题的能力。
三、实验内容1. 古典密码实验(1)仿射密码原理:仿射密码是一种单字母替换密码,加密公式为:C = (aP + b) mod 26,其中C为密文字母,P为明文字母,a和b为密钥。
操作步骤:1)编写加密函数encrypt,实现仿射密码加密;2)编写解密函数decrypt,实现仿射密码解密;3)测试加密和解密函数,验证其正确性。
(2)单表代替密码原理:单表代替密码是一种将明文字符映射到密文字符的替换密码。
操作步骤:1)编写加密函数subencrypt,实现单表代替密码加密;2)编写解密函数subdecrypt,实现单表代替密码解密;3)测试加密和解密函数,验证其正确性。
(3)维吉尼亚密码原理:维吉尼亚密码是一种多字母替换密码,加密公式为:C = (P + K[i]) mod 26,其中C为密文字母,P为明文字母,K为密钥,i为索引。
操作步骤:1)编写加密函数vigenereencrypt,实现维吉尼亚密码加密;2)编写解密函数vigeneredecrypt,实现维吉尼亚密码解密;3)测试加密和解密函数,验证其正确性。
2. 对称密码实验(1)DES加密算法原理:DES(Data Encryption Standard)是一种分组加密算法,采用56位密钥,64位分组。
操作步骤:1)编写DES加密函数desencrypt,实现DES加密;2)编写DES解密函数desdecrypt,实现DES解密;3)测试加密和解密函数,验证其正确性。
古典密码的实验报告1. 引言古典密码是一种古老的加密技术,用于在信息传递过程中保护敏感信息的安全性。
它通过将明文转换成密文,从而使未经授权的个体无法理解信息的内容。
本实验旨在介绍几种常见的古典密码算法,并通过实验验证其加密和解密的过程。
2. 凯撒密码凯撒密码是最简单的古典密码之一,它通过将明文中的每个字母向前或向后移动固定的位置来加密信息。
例如,当移动的位置为3时,明文中的字母A将被替换为D,字母B将被替换为E,以此类推。
2.1 加密过程1.输入明文。
2.设置移动的位置。
3.对于明文中的每个字母,按照移动的位置将其替换为对应的字母。
4.得到密文。
2.2 解密过程1.输入密文。
2.设置移动的位置。
3.对于密文中的每个字母,按照移动的位置将其替换为对应的字母。
4.得到明文。
3. 维吉尼亚密码维吉尼亚密码是一种多表密码,它通过使用一系列凯撒密码表来加密信息。
每个表中的移动位置逐个递增,这样可以更好地混淆明文的结构。
3.1 加密过程1.输入明文。
2.输入密钥。
3.对于明文中的每个字母,找到对应的凯撒密码表。
4.根据对应的表和密钥,将明文中的字母替换为密文。
5.得到密文。
3.2 解密过程1.输入密文。
2.输入密钥。
3.对于密文中的每个字母,找到对应的凯撒密码表。
4.根据对应的表和密钥,将密文中的字母替换为明文。
5.得到明文。
4. 培根密码培根密码是古典密码中的另一种类型,它使用一系列相同长度的字母组成的密钥来加密信息。
明文中的每个字母都将被替换为对应密钥中的字母。
4.1 加密过程1.输入明文。
2.输入密钥。
3.对于明文中的每个字母,将其对应到密钥中的相应字母。
4.得到密文。
4.2 解密过程1.输入密文。
2.输入密钥。
3.对于密文中的每个字母,将其对应到密钥中的相应字母。
4.得到明文。
5. 实验结果与讨论在本实验中,我们使用了凯撒密码、维吉尼亚密码和培根密码进行加密和解密实验。
通过对不同算法的测试,我们发现:1.凯撒密码是最简单的古典密码之一,但由于移动位置的确定性,易受到频率分析等攻击方式的威胁。
云南大学软件学院实验报告姓名:张儒雅学号:20111120075专业:信息安全教师:金鑫一、实验目的通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。
二、实验原理古典密码算法曾被广泛应用,大都比较简单。
它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。
其中替代密码和置换密码是具有代表性的两种古典密码算法。
1、替代密码替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其他字符替代后形成密文。
例如,明文字母a、b、c、d,用D、E、F、G做对应替换后形成密文。
最早的替代密码是由Julius Caesar 发明的Caesar (恺撒)密码,又叫循环移位密码。
它的加密过程可以表示为下面的函数:E(m) = (m+k ) mod n其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。
例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来的密文为L,计算过程如下:E(8) = (m+k ) mod n = (8+4 ) mod 26 = 12 = L 解密算法是:m = D(L) =(L-k)mod 262、置换密码置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。
置换密码又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。
它将明文中的字母按照给定的顺序安排在一个矩阵中,然后又根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。
例如,明文为 attack begins at five ,密钥为 cipher ,将明文按照每行6个字母的形式排在矩阵中,形成如下形式:a t t a c kb e g i n sa t f i v e根据密钥 cipher 中各字母在字母表中出现的先后顺序,得到给定的一个置换:f = 14 5 3 2 6因此有:密钥: 1 4 5 3 2 6明文: a t t a c kb e g i n sa t f i v e根据上面的置换,将原有矩阵中的字母按照第1列、第4列、第5列、第3列、第2列、第6列的顺序排列、则有下面的形式:a a c t t kb i n g e sa i v f t e从而得到密文:abatgftetcnvaiikse其解密过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。
一、实验目的本次实验旨在让学生了解密码分析学的基本原理和方法,掌握密码分析的基本步骤,并能够运用所学知识对简单的加密算法进行破解。
通过实验,提高学生对密码分析学的认识和实际操作能力。
二、实验内容1. 实验背景密码分析学是研究密码的编制和破译的学科,其主要任务是分析密码系统的安全性,找出其弱点,从而提高密码系统的安全性。
本次实验将针对古典密码和现代密码进行分析。
2. 实验步骤(1)古典密码分析①移位密码分析:选取一组明文和密钥,通过编写程序实现移位密码的加密和解密操作,观察并分析加密结果。
②维吉尼亚密码分析:选取一组明文和密钥,通过编写程序实现维吉尼亚密码的加密和解密操作,观察并分析加密结果。
③周期置换密码分析:选取一组明文和密钥,通过编写程序实现周期置换密码的加密和解密操作,观察并分析加密结果。
(2)现代密码分析①公钥密码分析:选取一组公钥和私钥,通过编写程序实现公钥密码的加密和解密操作,观察并分析加密结果。
②对称密码分析:选取一组密钥,通过编写程序实现对称密码的加密和解密操作,观察并分析加密结果。
3. 实验结果与分析(1)古典密码分析结果①移位密码:通过编写程序,我们可以观察到当密钥正确时,加密后的密文与明文之间的差异较大;当密钥错误时,加密后的密文与明文之间的差异较小。
②维吉尼亚密码:通过编写程序,我们可以观察到当密钥正确时,加密后的密文与明文之间的差异较大;当密钥错误时,加密后的密文与明文之间的差异较小。
③周期置换密码:通过编写程序,我们可以观察到当密钥正确时,加密后的密文与明文之间的差异较大;当密钥错误时,加密后的密文与明文之间的差异较小。
(2)现代密码分析结果①公钥密码:通过编写程序,我们可以观察到当公钥和私钥正确时,加密后的密文与明文之间的差异较大;当公钥和私钥错误时,加密后的密文与明文之间的差异较小。
②对称密码:通过编写程序,我们可以观察到当密钥正确时,加密后的密文与明文之间的差异较大;当密钥错误时,加密后的密文与明文之间的差异较小。
实验报告一、实验室名称: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.学习掌握置换密码的原理,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。
3.看懂实验程序代码,如有需要可在其上进行优化。
七、实验器材(设备、虚拟机名称):Windows 7工具:C:\tools\密码学课程\01密码学算法\02 古典密码\01 置换密码八、实验步骤:1、查看置换密码算法运行结果并学习其核心算法点击【置换密码.exe】,选择对明文【asdfgh】使用密钥【qwerty】进行加密,程序运行结果。
如下图所示但是在实验中发现,当密钥中包含相同字符时,加密和解密结果会出现问题,如下图所示:在观察程序代码后,发现应该是加密表生成出现问题,因此在实验中我重新修改了程序中计算加密表部分的代码,利用双层循环,对于每一个字符,计算比其小的字符或者和它一样但是出现在其左侧的字符个数,得到的序列便是加密表的内容,将程序按照上述思路修改后测试运行正确。
更新后的置换密码的核心算法如下所示。
#include<iostream>#include<algorithm>using namespace std;char a[20][6], b[20][6], c[20][6], m[102], key[6], ky[6], mw[102], bb[102];int zh[6], zh1[6];int j, len, length, e, f;voidISD_zhihuan_zhihuan(int le){int i, s = 0;if (le % 6 == 0)结果是否与明文一致。
2.学习掌握维吉尼亚算法的原理,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。
3.看懂实验程序代码,如有需要可在其上进行优化。
一、实验器材(设备、虚拟机名称):Windows 7工具:C:\tools\密码学课程\01密码学算法\02 古典密码\03 vigenere密码算法二、实验步骤:一、查看维吉尼亚密码算法运行结果并学习其核心算法点击文件【】,输入指令【v】,输入明文【xipuyangguang】,即可得到密钥和密文和明文,如图1所示图1维吉尼亚密码的核心算法如下所示。
根据实验中已给代码进行分析了解了维吉尼亚密码的实现步骤,将主程序中没有用到的生命变量去掉,加入一些交互语句得到如下代码:#include<>#include<>#include<>#include<>#include<iostream>using namespace std;void ISD_Vigenere_crypt(char m[], char k[], char r[]){int i, j, s = 0;j = strlen(k);for (i = 0; m[i]; i++)m[i] = tolower(m[i]);for (i = 0; k[i]; i++)k[i] = tolower(k[i]);for (i = 0; m[i]; i++)if (isalpha(m[i])){r[i] = (m[i] - 'a' + k[s%j] - 'a') % 26 + 'a';s++;/*s用来跳过明文中的空格字符*/}elser[i] = m[i];r[i] = 0;/*密文字符串结束符*/}voidISD_Vigenere_decrypt(char c[], char k[], char m[]){int i, j, s = 0;j = strlen(k);for (i = 0; c[i]; i++)c[i] = tolower(c[i]);for (i = 0; k[i]; i++)k[i] = tolower(k[i]);for (i = 0; c[i]; i++)if (isalpha(c[i])){m[i] = (c[i] - k[s%j] + 26) % 26 + 'a';s++;}elsem[i] = c[i];m[i] = 0;}void main(int argc, char *argv[]){char m[1024];printf("古典密码算法演示程序");char command;printf("\n");cout <<"输入v:维吉尼亚加密!\n";cout <<"输入h:获得帮助!\n";cout <<"输入e:退出程序!\n";cout <<"请输入指令:";loop: cin >> command;switch(command){case'v':{char k[] = "best";cout<<"\ninput plain text:";cin>>m;char c[80];char d[80];ISD_Vigenere_crypt(m, k, c);ISD_Vigenere_decrypt(c, k, d);cout <<"明文: ";puts(m);cout <<"密钥: ";puts(k);cout <<"加密结果: ";puts(c);cout <<"解密结果: ";puts(d);goto loop;}case'e':{return;}case'h':;{cout <<"输入v:维吉尼亚加密!\n";cout <<"输入h:获得帮助!\n";cout <<"输入e:退出程序!\n";goto loop;}default:goto loop;}}三、实验结果及分析:测试程序,结果正确,如下图所示:明文 nomo reco unti ngdo llar s密钥 be s t best best best best b加密 os eh siuh vrlb okvh mpsk t解密nomo reco unti ngdo llar s验证结果与输出一致,正确四、实验结论:维吉尼亚密码加密方法是根据密钥内容,对输入的明文的字母进行替换,在密钥长度大于1的情况下,通常来说相同的字母也会由于对应的密钥字符不同而被不同的字符所替换,因此在一定程度上来说保证了加密技术的安全性,但是若已知密钥的长度且有足够多样本的情况下,同样也可以做词频分析从而破译密码。
五、总结及心得体会:维吉尼亚密码作为古典密码中的一种,加密原理简单易懂,程序实现也没有太大的困难,并且在密钥长度较长时加密安全性也可以有一定保证,较难破译,但用频率分析法可以破译已知密钥长度的密文,因此对于现代技术来说容易破译,但通过学习维吉尼亚密码学到了其加密的原理和基于统计破译密码的思想,收获很大。
实验报告一、实验室名称:SimpleSPC信息安全云实验系统二、实验项目名称:古典密码——代换密码三、实验学时:1学时四、实验原理:1) 单表代换密码a) 加法密码A和B是有 n个字母的字母表。
定义一个由A到B的映射:f:A→Bf(ai )= bi=ajj=i+k mod n加法密码是用明文字母在字母表中后面第 k个字母来代替。
K=3 时是著名的凯撒密码。
恺撒密码——历史上第一个密码技术“恺撒密码”是古罗马恺撒大帝在营救西塞罗战役时用来保护重要军情的加密系统(《高卢战记》)。
b) 乘法密码A和B是有n个字母的字母表。
?定义一个由A到B的映射:f:A→B f(ai )= bi= aj j=ik mod n 其中,(n,k)=1。
注意:只有(n,k)=1,才能正确解密。
c) 密钥词组代替密码随机选一个词语,去掉其中的重复字母,写到矩阵的第一行,从明文字母表中去掉这第一行的字母,其余字母顺序写入矩阵。
然后按列取出字母构成密文字母表2) 多表代换密码单表代替密码的安全性不高,一个原因是一个明文字母只由一个密文字母代替。
可以利用频率分析来破译。
故产生了更为安全的多表代换密码,即构造多个密文字母表,在密钥的控制下用以一系列代换表依次对明文消息的字母序列进行代换。
著名的多表代替密码有Vigenere密码等。
a) Vernam密码明文、密文、密钥都表示为二进制位:M=m1,m2,… ,mn K =k1,k2,… ,kn C =c1,c2,… ,cnb) Playfair密码用密钥控制生成矩阵,然后每两个字母为单位进行代换。