2.3_单表代替密码的分析
- 格式:pdf
- 大小:65.33 KB
- 文档页数:25
一、实验目的1. 理解并掌握传统密码算法的基本原理和实现方法。
2. 通过编程实践,加深对传统密码算法的理解。
3. 分析传统密码算法的优缺点,为后续学习现代密码算法打下基础。
二、实验内容本次实验主要涉及以下三种传统密码算法:1. 仿射密码2. 单表代替密码3. 维吉尼亚密码1. 仿射密码(1)原理简介:仿射密码是一种单字母替换密码,加密公式为:Ci = (ai pi + bi) mod 26,其中Ci为密文,pi为明文,ai和bi为密钥。
(2)算法流程:① 加密:根据密钥计算密文。
② 解密:根据密钥计算明文。
(3)代码实现(C语言):```c#include <stdio.h>// 加密函数void encrypt(char plaintext, char key, char ciphertext) {int a = key[0] - 'a';int b = key[1] - 'a';for (int i = 0; plaintext[i] != '\0'; i++) {if (plaintext[i] >= 'a' && plaintext[i] <= 'z') {ciphertext[i] = (a (plaintext[i] - 'a') + b) % 26 + 'a';} else {ciphertext[i] = plaintext[i];}}ciphertext[strlen(plaintext)] = '\0';}// 解密函数void decrypt(char ciphertext, char key, char plaintext) {int a = key[0] - 'a';int b = key[1] - 'a';for (int i = 0; ciphertext[i] != '\0'; i++) {if (ciphertext[i] >= 'a' && ciphertext[i] <= 'z') {plaintext[i] = (a (ciphertext[i] - 'a' - b + 26) % 26) + 'a';} else {plaintext[i] = ciphertext[i];}}plaintext[strlen(ciphertext)] = '\0';}int main() {char plaintext[100] = "hello world";char key[3] = "ab";char ciphertext[100], decryptedtext[100];encrypt(plaintext, key, ciphertext);decrypt(ciphertext, key, decryptedtext);printf("Plaintext: %s\n", plaintext);printf("Ciphertext: %s\n", ciphertext);printf("Decrypted text: %s\n", decryptedtext);return 0;}```2. 单表代替密码(1)原理简介:单表代替密码是一种将明文中的每个字符映射到密文的密码算法。
1、密码体制分类及典型算法描述密码体制分为三类:1、换位与代替密码体质2、序列与分组密码体制3、对称与非对称密钥密码体制。
典型算法描述:2、试对代替密码和换位密码进行安全性分析。
1.单表代替的优缺点优点: 明文字符的形态一般将面目全非缺点: (A) 明文的位置不变; (B) 明文字符相同,则密文字符也相同; 从而导致:(I) 若明文字符e被加密成密文字符a,则明文中e的出现次数就是密文中字符a的出现次数; (II) 明文的跟随关系反映在密文之中. 因此,明文字符的统计规律就完全暴露在密文字符的统计规律之中.形态变但位置不变 2. 多表代替的优缺点优点: 只要(1) 多表设计合理,即每行中元互不相同,每列中元互不相同.(这样的表称为拉丁方表) (2) 密钥序列是随机序列即具有等概性和独立性。
这个多表代替就是完全保密的。
等概性:各位置的字符取可能字符的概率相同独立性在其它所有字符都知道时也判断不出未知的字符取哪个的概率更大。
2. 多表代替的优缺点密钥序列是随机序列意味着1密钥序列不能周期重复2密钥序列必须与明文序列等长3这些序列必须在通信前分配完毕4大量通信时不实用5分配密钥和存储密钥时安全隐患大。
缺点周期较短时可以实现唯密文攻击。
换位密码的优缺点优点: 明文字符的位置发生变化;缺点: (A) 明文字符的形态不变;从而导致: (I) 密文字符e的出现频次也是明文字符e的出现次数; 有时直接可破! (如密文字母全相同) 换位密码优缺点总结:位置变但形态不变. 代替密码优缺点总结: 形态变但位置不变3、ADFGX密码解密过程分析1918年第一次世界大战已经接近尾声。
为了挽回日趋不利的局面德军集中了500万人的兵力向协约国发动了猛烈的连续进攻。
采用一种新密码ADFGX密码体制。
该密码用手工加解密费时不多符合战地密码的基本要求。
进行了两次加密有两个密钥一个是代替密钥棋盘密钥一个是换位密钥。
其结果是把前面代替加密形成的代表同一明文字符的两个字母分散开破坏密文的统计规律性。
单表代替密码原理及算法实现 要了解单表替代密码就得先了解替代密码,在这⾥我就做⼀下简单的介绍:替代是古典密码中⽤到的最基本的处理技巧之⼀。
替代密码是指先建⽴⼀个替换表,加密时将需要加密的明⽂依次通过查表,替换为相应的字符,明⽂字符被逐个替换后,⽣成⽆任何意义的字符串,即密⽂,替代密码的密钥就是其替换表。
根据密码算法加解密时使⽤替换表多少的不同,替代密码⼜可分为单表替代密码和多表替代密码。
单表替代密码的密码算法加解密时使⽤⼀个固定的替换表。
单表替代密码⼜可分为⼀般单表替代密码、移位密码、、密钥短语密码。
这⾥讲单表替代密码的直接攻击。
对于⾃然语⾔,如果取⼀本⾮专业书籍,统计⾜够长的课⽂就会发现,字母(或字符)出现的频率会反映出相应语⾔的统计特性。
统计⼤量的课⽂定会发现,相应语⾔中每个字母在相应语⾔中出现的概率。
于是便得到该语⾔字母表上的⼀个概率分布。
⼀、英⽂字母⼀由独⽴试验产⽣明⽂单码,Beker在1982年统计的样本总数为100 362,得到单码的概率分布见下表:根据上表,英⽂字母出现的概率按⼤⼩排列如下:E T A O I N S H R D L C U M WFG Y P B V K J X Q Z在上表中,不少字母出现的概率近乎相等。
为了应⽤⽅便,常将英⽂字母表按字母出现的概率⼤⼩分类,分类情况见下表:--------------------------极⾼频 E次⾼频 T A O I N S H R中等频 D L低频 C U M W F G Y P B甚低频 V K J X Q Z--------------------------其它语⾔和数据也有类似于英语语⾔的单字母统计特性。
如果我们随意统计⼀段⾜够长的英⽂课⽂,只要内容不是太特殊,其结果⼀定和上表基本相同。
这表明英⽂的⼀篇⽂章中各个字母出现的概率是基本可预测的,它将为密码分析提供⼀个⽅⾯的依据。
语⾔的单字母统计特性⾄少在以下两个⽅⾯没有反映出英⽂语⾔的特征:⑴根据英⽂的单字母统计特性可以计算出双字母QE出现的概率为p(QE)=0.00095×0.12702≈1.21×10^(-4)这就是说,在10^6个双字母的抽样中,QE出现的次数⼤约应为121次,但这不符合英⽂课⽂的实际。
单表代换密码课程设计一、课程目标知识目标:1. 学生能理解单表代换密码的定义和基本原理;2. 学生能够掌握至少一种单表代换密码的加密和解密方法;3. 学生能够解释单表代换密码在历史和现代通信中的应用和重要性。
技能目标:1. 学生能够运用所学知识,独立完成单表代换密码的加密和解密操作;2. 学生能够运用逻辑思维和分析能力,破解简单的单表代换密码;3. 学生能够运用单表代换密码进行简单信息的传递和解读。
情感态度价值观目标:1. 学生能够认识到密码学在信息安全中的重要作用,增强信息安全意识;2. 学生通过学习单表代换密码,培养对密码学的好奇心和探索精神;3. 学生能够体会到团队合作在解决问题中的优势,增强团队协作意识。
课程性质:本课程为信息技术与信息安全领域的拓展课程,旨在通过学习单表代换密码,提高学生的信息素养和逻辑思维能力。
学生特点:考虑到学生所在年级的特点,课程内容设计将结合学生的认知水平和兴趣,以实际操作和案例分析为主线,增强学生的学习兴趣和参与度。
教学要求:教师应注重理论与实践相结合,通过问题驱动的教学方式,引导学生主动探究和解决问题,确保学生达到课程目标所设定的具体学习成果。
同时,关注学生的个体差异,给予个性化指导,使全体学生都能在课程中取得进步。
二、教学内容1. 单表代换密码的定义与分类:介绍单表代换密码的基本概念、分类及其特点,结合教材相关章节,使学生理解其在密码学中的地位和作用。
2. 单表代换密码的加密方法:详细讲解至少一种单表代换密码的加密过程,如凯撒密码、替换密码等,让学生掌握其基本操作和原理。
3. 单表代换密码的解密方法:分析单表代换密码的解密技巧,指导学生学会如何逆向思考,破解加密信息。
4. 单表代换密码的应用实例:通过案例分析,介绍单表代换密码在历史和现代通信中的应用,让学生了解其实际价值。
5. 单表代换密码的安全性分析:探讨单表代换密码的安全性,分析其可能存在的弱点,引导学生思考如何提高密码的安全性。
一、实验目的1. 理解并掌握加密的基本原理和常用算法。
2. 学会使用编程语言实现简单的加密和解密过程。
3. 提高对网络安全和信息安全重要性的认识。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 工具:PyCharm三、实验内容本次实验主要涉及以下加密算法:1. 仿射密码2. 单表代替密码3. 维吉尼亚密码4. RSA算法四、实验步骤及结果1. 仿射密码(1)原理简介:仿射密码是一种基于线性代数的加密方法,其加密公式为 \(c = (ap + b) \mod 26\),其中 \(a\) 和 \(b\) 是密钥,\(p\) 是明文字符对应的数字,\(c\) 是密文字符对应的数字。
(2)代码实现:```pythondef affine_encrypt(plain_text, a, b):cipher_text = ''for char in plain_text:if char.isalpha():p = ord(char.lower()) - ord('a') c = (a p + b) % 26cipher_text += chr(c + ord('a')) else:cipher_text += charreturn cipher_textdef affine_decrypt(cipher_text, a, b):cipher_text = cipher_text.lower()a_inv = pow(a, -1, 26)plain_text = ''for char in cipher_text:if char.isalpha():c = ord(char) - ord('a')p = (a_inv (c - b)) % 26plain_text += chr(p + ord('a')) else:plain_text += charreturn plain_text```(3)测试结果:明文:HELLO WORLD密文:RQWKHU WHDP解密:HELLO WORLD2. 单表代替密码(1)原理简介:单表代替密码是一种将明文字符映射到密文字符的加密方法,其中每个明文字符只对应一个密文字符。
第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、密码体制分类及典型算法描述密码体制分为三类:1、换位与代替密码体质2、序列与分组密码体制3、对称与非对称密钥密码体制。
典型算法描述:2、试对代替密码和换位密码进行安全性分析。
1.单表代替的优缺点优点: 明文字符的形态一般将面目全非缺点: (A) 明文的位置不变; (B) 明文字符相同,则密文字符也相同; 从而导致:(I) 若明文字符e被加密成密文字符a,则明文中e的出现次数就是密文中字符a的出现次数; (II) 明文的跟随关系反映在密文之中. 因此,明文字符的统计规律就完全暴露在密文字符的统计规律之中.形态变但位置不变 2. 多表代替的优缺点优点: 只要(1) 多表设计合理,即每行中元互不相同,每列中元互不相同.(这样的表称为拉丁方表) (2) 密钥序列是随机序列即具有等概性和独立性。
这个多表代替就是完全保密的。
等概性:各位置的字符取可能字符的概率相同独立性在其它所有字符都知道时也判断不出未知的字符取哪个的概率更大。
2. 多表代替的优缺点密钥序列是随机序列意味着1密钥序列不能周期重复2密钥序列必须与明文序列等长3这些序列必须在通信前分配完毕4大量通信时不实用5分配密钥和存储密钥时安全隐患大。
缺点周期较短时可以实现唯密文攻击。
换位密码的优缺点优点: 明文字符的位置发生变化;缺点: (A) 明文字符的形态不变;从而导致: (I) 密文字符e的出现频次也是明文字符e的出现次数; 有时直接可破! (如密文字母全相同) 换位密码优缺点总结:位置变但形态不变. 代替密码优缺点总结: 形态变但位置不变3、ADFGX密码解密过程分析1918年第一次世界大战已经接近尾声。
为了挽回日趋不利的局面德军集中了500万人的兵力向协约国发动了猛烈的连续进攻。
采用一种新密码ADFGX密码体制。
该密码用手工加解密费时不多符合战地密码的基本要求。
进行了两次加密有两个密钥一个是代替密钥棋盘密钥一个是换位密钥。
其结果是把前面代替加密形成的代表同一明文字符的两个字母分散开破坏密文的统计规律性。
一、实验目的1. 理解并掌握常见的加密算法和密码体制的基本原理。
2. 学会使用密码学工具进行加密和解密操作。
3. 增强网络安全意识,提高对密码学在实际应用中的认识。
二、实验内容1. 仿射密码2. 单表代替密码3. 维吉尼亚密码4. AES加密算法三、实验原理1. 仿射密码:加密原理为将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。
解密原理与加密原理相反。
2. 单表代替密码:加密原理为利用代替表,将明文中的每个字符映射到密文。
解密原理为对代替表进行反向查找,由密文映射回明文。
3. 维吉尼亚密码:加密原理为通过加密方程Ci (pi k(i mod m)) mod 26,由明文得到密文。
解密原理为解密过程是加密过程的逆过程,通过解密方程pi (Cik(i mod m)) mod 26。
4. AES加密算法:是一种分组加密算法,将128位明文分为128位的数据块,使用密钥进行加密,得到128位的密文。
解密过程与加密过程相反。
四、实验步骤1. 仿射密码(1)选择明文:选择一段英文或数字,例如:"Hello World!"(2)选择密钥:选择一个密钥a和模数m,例如:a=5,m=26。
(3)加密:将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。
(4)解密:将密文进行0~25字母编码,按照解密公式计算出明文对应位置的字母编码,最后从明文的字母编码还原出明文对应位置的字母。
2. 单表代替密码(1)构造代替表:选择一个代替表,将明文中的每个字符映射到密文。
(2)加密:将明文中的每个字符按照代替表进行映射,得到密文。
(3)解密:将密文中的每个字符按照代替表的逆映射,得到明文。
3. 维吉尼亚密码(1)选择密钥:选择一个密钥,例如:"KEY"(2)加密:将明文和密钥进行异或操作,得到密文。
对单表代换加密算法的实现和攻击——PB09210277 阮琪森一、单表代换加密算法的实现1.对单表代换加密算法的理解。
单表代换加密算法是传统对称加密算法的一种,它主要是通过输入的密钥建立一个明文字符和密文字符的映射表来实现加密。
它的密钥空间为26!,因此它相对于Caesar 密码在抗穷举攻击方面有了很大的改进。
但是在抗频率统计攻击方面就显得很脆弱,只要密文的长度足够,就可以轻易地进行唯密文攻击。
2.单表代换加密算法的设计。
如上图所示,加密者先输入密钥key ,用算法检查key 是否符合规范,比如说不能重复,而且密钥要有26个字符。
然后根据密钥,把密钥中的字符和明文中存在的字符26个字母一一对应起来,即建立代换表。
然后输入明文plaintext ,利用代换表把明文中的字母代换成代换表中相应的字母,从而生成密文。
解密时,输入密钥建立代换表,然后像加密一样,把密文中的字母代换成代换表中相应的字母,从而再现明文。
3.程序设计及实现。
程序设计中对输入变量的要求:密钥key :是26个英文字母的排列,明文plaintext :要求明文中只能有26个字母出现,不能有其他符号包括空格,大小写不限,长度不限,可从键盘输入,也可从txt 文件读入。
密文ciphertext :全部用大写字母,只能有26个字母出现,不能有其他符号包括空格,长度不限,可从键盘输入,也可从txt 文件读入。
int main(int argc,char *argv[])main()为主函数,为程序入口,负责让用户选择加密/解密功能;int Encryption(void )Encryption()为加密子函数,负责让用户输入密钥key 和明文plaintext ,并调用子函数check()对密钥进行检查。
然后用密钥建立代换表replace ,最后用代换表对明文进行加密并输出。
输出有两种方式,一是直接显示在屏幕上,二是除了显示密钥key密文ciphertext 密钥key 明文plaintext 密钥检查加密代换建立代换表建立代换表解密代换密文ciphertext 明文plaintext单表代换加密算法设计代表代换解密算法设计在屏幕上以外还输出到用户指定的文件中。
课程:网络信息安全实验日期:2015年5 月7 日成绩:实验一古典密码算法【实验目的】理解代换密码学加密过程【网络环境】交换网络结构【实验工具】Matlab【实验原理】古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。
古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。
【实验步骤】一.手动完成Kaiser密码(1)根据Kaiser密码的基本原理,写出当密钥k=3时,对应明文:data security has evolved rapidly 的密文:GDWDVHFXULWBKDVHYROYHGUDSLGOB 。
(2)进入Matlab,打开fangshe_cipher.m,并运行该程序,在明文输入区明文:data security has evolved rapidly。
输入密钥k1=1, k2=3,查看相应的密文,并与手动加密的密文进行比较。
GDWDVHFXULWBKDVHYROYHGUDSLGOB请根据密钥验证密文与明文对应关系是否正确。
二. Kaiser密码分析(1)进入Matlab,打开fangshe_cipher.m,并运行该程序,输入密钥k1=1,k2不为0,在明文输入区明文(要求明文有一定的意义以便让同组主机分析)。
请设置密钥参数k1:1请设置密钥参数k2:2明文:gameover 。
课程:网络信息安全实验日期:2015年5 月7 日成绩:(2)选择合适的密钥k2值完成Kaiser 加密,将密文记录下来。
密文:ICOGQXGT 。
(3)通知同组主机(不要告知密钥值k2)密文,让同组主机获取密文。
同组主机对密文进行Kaiser解密。
clc;clear;A='abcdefghijklmnopqrstuvwxyz';B='ABCDEFGHIJKLMNOPQRSTUVWXYZ';fprintf('==========仿射变换加密系统==========\n');k1=input('请设置密钥参数k1:');%k1应与26互素,k1=1时便是凯撒变换k2=input('请设置密钥参数k2:');C=input('请输入密文:');%输入小写字母,且要加上单引号d=length(C);D=zeros(1,d);Z='';for i=1:dfor j=1:26if A(j)==C(i)m=j-1;c=k1*m+26-k2;D(i)=rem(c,26);break;endendendfor i=1:dn=D(i)+1;课程:网络信息安全实验日期:2015年5 月7 日成绩:Z(i)=B(n);endfprintf('明文:');Z(4)同组主机调节密钥k2,从而进行密码分析(平均13次,最坏26次破解)。
单表代换密码课程设计一、课程目标知识目标:1. 学生能理解单表代换密码的概念,掌握其基本原理和应用方法。
2. 学生能运用所学知识,分析并解决实际问题,如编制和破译简单的单表代换密码。
3. 学生了解单表代换密码在历史和现实生活中的应用,提高对密码学的认识。
技能目标:1. 学生能够独立完成单表代换密码的编制和破译,提高逻辑思维和推理能力。
2. 学生通过小组合作,培养团队协作能力和沟通技巧,共同解决复杂问题。
3. 学生能够运用信息技术手段,如计算机软件,辅助完成单表代换密码的编制和破译。
情感态度价值观目标:1. 学生培养对密码学的兴趣,激发学习主动性和积极性。
2. 学生通过学习单表代换密码,认识到信息安全的重要性,提高信息保护意识。
3. 学生在小组合作中,学会尊重他人意见,培养良好的团队精神和道德品质。
课程性质:本课程为信息技术与数学相结合的跨学科课程,注重培养学生的逻辑思维、动手能力和团队协作精神。
学生特点:六年级学生具有一定的信息素养和数学基础,对新鲜事物充满好奇心,喜欢动手操作和实践。
教学要求:结合学生特点,采用任务驱动、小组合作等教学方法,引导学生主动探究,提高课堂参与度。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 单表代换密码的基本概念与原理:- 引导学生了解密码学发展简史,认识单表代换密码的地位与作用。
- 讲解单表代换密码的构成要素,如密钥、加密算法和加密过程。
2. 单表代换密码的编制与破译:- 介绍单表代换密码的编制方法,如凯撒密码、替换密码等。
- 指导学生通过实际操作,学会编制和破译简单的单表代换密码。
3. 单表代换密码的应用实例:- 分析历史上著名的单表代换密码案例,如二战时期的恩尼格玛密码机。
- 讨论单表代换密码在现实生活中的应用,如计算机安全、通信加密等。
4. 密码学相关信息技术:- 结合计算机软件,介绍单表代换密码的编程实现方法。
- 引导学生了解信息安全领域的基本概念,提高信息保护意识。
实验报告姓名:1111 学号:111111 班级:1111111 日期:1111 古典密码(单表代换密码)一、实验环境1.硬件配置:处理器:Corei5 M ***********,内存2GB,主硬盘320G2.使用软件:(1)操作系统:win7(2)软件工具:Microsoft Visual C++6.0二、实验设计的相关概念或基本原理1.单表代换密码的基本原理:对字母表中的每一个字母用别的字母代换形成密文。
明文和密文代换的规则可以是先任选一个易记的单词或短语或一句话作为密钥放在前面,然后从A到X的顺序中剔除前面出现过的字母后依次补在后面,形成代换表。
三、实验内容根据实验原理的介绍,你先选取一个密钥,创建一个明文信息,编写实现程序,实现加密和解密的操作。
实验流程图:四、实验总结分析关键代码:1.产生代换表:void generate_alphabeta( )//产生代换表{int i,j;cout<<"请先输入密钥句子,至少为1个字符,最多100个字符,且第一个字符必须是小写字母:"<<endl;cin>>miyue;//输入的密钥句子,至少为1个字符,最多100个字符,且第一个必须为字母cout<<miyue<<endl;int length=strlen(miyue);//cout<<"密钥句子的长度为:"<<length<<endl;int pos=0;//指示填充位置int tag=1;//alphabeta[0] =miyue[0];//填充第0个位置for(i=1;i<length;i++){if (isalpha(miyue[i])!=0) //是字母{tag=1;for (j=0;j<=pos;j++){if(alphabeta[j]==miyue[i])//alphabet表中已经存在字母miyue[i]{tag=0;break;}}if(tag==1)alphabeta[++pos]=miyue[i];}}for(i=0;i<26;i++) //把英文字母表中还没有出现在代换字母表中的字母存入代换字母表{tag=1;for (j=0;j<=pos;j++){if(alphabeta[j]==str[i])//alphabet表中已经存在英文字母表中的第i个字母{tag=0;break;}}if(tag==1)alphabeta[++pos]=str[i];}cout<<"原始字母表为"<<str<<endl;cout<<"代换密码表为"<<alphabeta<<endl;}2.加密算法int encrepty( )//加密{int pos;//alphabeta[0]是序号为0的字母a的密文,alphabeta[1]是序号为1的字母的密文...,依次类推for(int i=strlen(source);i>=0;i--){if(islower(source[i]))//假如当前字符是小写字母{pos=source[i]-'a';//计算出当前字母在字母表中的序号cipher[i]=alphabeta[pos];}else //不是字母,原样复制cipher[i]=source[i];}cout<<"密文为:"<<cipher<<endl;return 1;}3.解密算法int deciphring( )//解密{for(int i=strlen(cipher);i>=0;i--){if(islower(cipher[i]))//假如当前字符是小写字母{for (int j=0;j<26;j++){if(cipher[i]==alphabeta[j])//当前密文字符,在代换字符表的第j个位置,在其明文字符为str[j];{source[i] =str[j];break;}}}else //不是字母,原样复制source[i]=cipher[i];}cout<<source<<endl;return 1;}结果显示:4.小结此算法的难点在于如何通过密钥句子写出代换表,根据算法的思路,主要是要解决去掉密钥句子中重复字母,再将未出现过的字母依次填充代换表中,形成最终的代换表。
第三节单表代替密码的分析12攻击单表代替密码首先要识别所破译的报文是否是单表代替密码加密单表代替密码加密的致命弱点是…….启示:统计密文中每个字母出现的频次, 算出独立抽样的单字母, 双字母和三字母的概率分布密文的特性基本上同明文的单字母, 双字母和三字母的统计特性相似, 所不同的只不过是作了一次固定的代替而已。
猜字法:该方法的主要依据是每个密文字母在密文中出现的概率和自然语言的文字结合规律。
攻击单表代替密码的基本步骤1. 作出密文中每个字母出现的频次统计表, 算出每个密文字母出现的概率, 并与明文字母的概率分布进行对照, 区分哪些是高概率字母, 哪些是低概率字母。
一般说来, 这仅仅提示出某些密文字母对应的明文字母可能属于表2.2中的哪一类, 还不能具体识别它确切地对应哪个明文字母。
32. 用以上得到的信息和自然语言的文字结合规律, 即自然语言的双字母和三字母的统计特性, 推断出一些可能的明密对应关系。
43. 利用自然语言的文字结合规律验证上面推出的明密对应关系, 同时还可能推断出一些新的明密对应关系。
54. 利用模式字或模式短语由于加密是单表代替, 所以明文中经常出现的词, 如beginning, committee, people, tomorrow等, 在密文中也会以某种模式重复。
如果猜出一个或几个词, 或一个短语, 就会大大加速正确代替表的确定,这常常是攻击的关键。
这一技术在对付规格化的五字母为一组的密文时往往会遇到些困难, 因为密文中无字长信息。
6自然语言的文字结合规律一些字母在词头频繁出现, 另一些字母在词尾频繁出现。
7例如, 英文字母在词头频繁出现的十个字母按概率大小依次为:T A S O I C W P B F英文字母在词尾频繁出现的十个字母按概率大小依次为:E S D N T R YF O L8辅音和元音的结合规律。
这主要靠研究双字母, 三字母和四字母的密文组合。
这样的组合中一般必含有一个元音。
第三节单表代替密码的分析
1
2
攻击单表代替密码首先要识别所破译的报文是否是单表代替密码加密单表代替密码加密
的致命弱点是…….启示:统计密文中每个字母出现的频次, 算出独
立抽样的单字母, 双字母和三字母的概率分布
密文的特性基本上同明文的单字母, 双字母和三字母的统计特性相似, 所不同
的只不过是作了一次固定的代替而已。
猜字法:该方法的主要依据是每个密文字母在密文中出现的概率和自然语言的文字结合规律。
攻击单表代替密码的基本步骤
1. 作出密文中每个字母出现的频次统计表, 算出每个密文字母出现的概率, 并与明文字母的概率分布进行对照, 区分哪些是高概率字母, 哪些是低概率字母。
一般说来, 这仅仅提示出某些密文字母对应的明文字母可能属于表
2.2中的哪一类, 还不能具体识别它确切地对应哪个明文字母。
3
2. 用以上得到的信息和自然语言的文字结合规律, 即自然语言的双字母和三字母的统计特性, 推断出一些可能的明密对应关系。
4
3. 利用自然语言的文字结合规律验证上面推出的明密对应关系, 同时还可能推断出一些新的明密对应关系。
5
4. 利用模式字或模式短语
由于加密是单表代替, 所以明文中经常出现的词, 如beginning, committee, people, tomorrow等, 在密文中也会以某种模式重复。
如果猜出一个或几个词, 或一个短语, 就会大大加速正确代替表的确定,这常常是攻击的关键。
这一技术在对付规格化的五字母为一组的密文时往往会遇到些困难, 因为密文中无字长信息。
6
自然语言的文字结合规律
一些字母在词头频繁出现, 另一些字母在词尾频繁出现。
7
例如, 英文字母在词头频繁出现的十个字母按概率大小依次为:
T A S O I C W P B F
英文字母在词尾频繁出现的十个字母按概率大小依次为:
E S D N T R Y
F O L
8
辅音和元音的结合规律。
这主要靠研究双字母, 三字母和四字母的密文组合。
这样的组合中一般必含有一个元音。
根据这些组合很可能确定出表示元音的那些密文字母。
9
例2.6 给定密文为
UZ QSO VUOHXMOPV GPOZPEVSG ZWSZ OPFPESX UDBMETSX AIZ VUEPHZ HMDZSHZO WSFP APPD TSVP QUZW YMXUZUHSX EPYEPOPDZSZUFPO MB ZWP FUPZ HMDJ UD TMOHMQ
10
攻击的第一步是作出密文字母出现的频次分布表:
字母A B C D E F G H I J K L M
频次2206642711008
字母N O P Q R S T U V W X Y Z
频次09163010310545214
11
第二步是确定其加密密表类型。
由密文字母出现的频次分布表不难看出,此段密文是单表代替加密的可能性很大。
因为找不出有哪个位置能使密文字母的概率分布和明文字母的概率分布相匹配, 也不能把这个未知的分布用抽样转换成正常分布, 从而断定它不是移位代替密码和乘法代替密码, 因此是混合型代替表加密的。
12
第三步是根据密文字母的频次统计, 确定某些密文字母对应的明文字母可能属于表2.2中哪个类型或哪几个字母组成的集合。
此例中
密文字母集→对应的明文所属的类或字母集
P, Z →E, T
H,M,O,S,U →A,I,N,O,R,S
A,B,I,J,Q,T,Y→G,J,K,Q,V,W,X,Y,Z
13
第四步是利用自然语言的文字结合规律进行猜测。
Z经常在词头或词尾出现, 故猜测它与t对应, 而P 经常在词尾出现而未在词头出现, 所以猜测它与明文字母E对应。
14
由于低频次密文字母Q和T都是两个词的词头, 因此它们很可能是低频次的字母而且经常作词头的字母集{C,W,P,B,F}中的元素。
15
利用双字母, 三字母统计特性及元音辅音拼写知识, 我们猜测单词MB中必有一个元音字母,而B出现的频次较低, 故M更可能为元音字母,否则可能B与Y对应。
16
对于UZ和UD,要么U为元音,要么Z和D都是元音而U 为辅音。
若U为辅音, 则相应的明文可能为me,my或be,by, 但U与m或b对应时, 都不大象, 因为U出现的频次较高。
因而可能U为元音, 而Z和D是辅音。
若Z为辅音, 则ZWP将暗示W或P为元音。
由P和Z出现的频次看, ZWP中的P可能为元音。
17
假定选U为元音, Z为辅音, 观察ZWSZ很象that, 则ZWP可能为定冠词the。
由此
WSFP APPD
h..e.ee.
可能暗示出单词have和been。
18
至此, 我们得到密文和明文对照为:
UZ QSO VUOHXMOPV GPOZPEVSG ZWSZ OPFPESX .t .a. .......e. .e.t e..a.t h a t .e v e.a. UDBMETSX AIZ VUEPHZ HMDZSHZO WSFP APPD .n....a. b.t ...e.t ..n t a.t.h a v e b e e n
TSVP QUZW YMXUZUHSX EPYEPOPDZSZUFPO MB .a.e ..t h ....t..a. .e..e.e.t a t.v e. ..
ZWP FUPZ HMDJ UD TMOHMQ
t h e ..e t ..n. .n ......
19
由此可见, UZ可能为at或it, 但A→s, 所以U→i。
而QUZW可能为with, 即Q→w。
因而QSO为was, 即O→s。
这与字母出现的频次关系一致。
至此, 我们猜测的结果为
it was .is...se. .este..a. that seve.a. in....a. b.t
.i.e.t..nta.ts have been .a.e with ...iti.a. .e..es-entatives.. the viet..n. in ..s..w
20
由此不难猜出: GPOZPEVSG 是yesterday, OPFPESX是several, EPYEP0PDZSZUFPO 是representatives, 而FUPZ HMDJ是viet cong(越共)。
将这些代替关系用于密文, 再作进一步尝试就可确定N, O, R对应的明文字母。
21
经过整理恢复的明文如下:
it was disclosed yesterday that several informal(非正式的) but direct contacts have been made with political representatives of the viet cong (越南)in moscow
22
由于密文中J,K,Z,X和Q未出现, 所以虽然破译了这份报文, 但还未找出明密代替表。
为了攻击用同一代替表加密的其它密文, 可进一步作些分析工作。
列出现有的代替表如下:
字母a b c d e f g h i j k l m
频次S A H V P B J W U??X T
字母n o p q r s t u v w x y z
频次D M Y?E O Z I F Q?G?
23
由上表可知字母V, W, X, Y, Z在密文代替表中以4为间距隔开, 将密文字母按照列写成4行得:
S P U T . I .
A B . D E F G
H J . M O Q .
V W X Y Z
24
显然, 字母C应该插在B和D之间, R在Q与V之间。
第一行为密钥字, 共有7个字母,已知其中5个, 余下的两个为N及K和L中的一个。
第5个字母为N, 则第7个字母为K。
从而确定出代替表是以SPUTNIK(人造地球卫星)为密钥字, 由4×7矩阵构造的代替表。
25。