实验六:matlab古典密码与破译

合集下载

古典密码实验报告

古典密码实验报告

实验报告一、实验室名称: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.学习掌握置换密码的原理,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。

古典密码实验报告

古典密码实验报告

哈尔滨工程大学实验报告实验名称:古典密码算法班级:学号:姓名:实验时间: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密码”视图,在明文输入区输入明文(明文应为英文),单击“加密”按钮进行加密。

密码锁编程 matlab程序

密码锁编程 matlab程序

一、背景介绍密码锁是一种常见的安全设备,通过输入密码来开启或关闭设备。

密码锁编程是指使用计算机编程语言对密码锁进行控制和设置。

MATLAB是一种功能强大的编程语言和工程软件,可以用来实现密码锁的编程。

二、密码锁编程的基本原理1. 密码输入与验证:用户通过键盘输入密码,程序接收并验证密码的正确性。

2. 开锁与关锁:当密码输入正确时,程序可以通过控制电子锁实现开锁操作;密码错误时,程序可以记录错误次数并进行报警。

3. 程序界面设计:可以通过MATLAB的图形界面设计工具创建用户友好的交互界面,提供输入密码和显示结果的功能。

三、密码锁编程的具体步骤1. 设置密码:首先需要设定一个初始密码,并将其储存在程序中。

2. 用户输入:程序需要接收用户输入的密码。

3. 验证密码:程序对用户输入的密码进行验证,判断是否与设定的初始密码一致。

4. 开锁与关锁:如果密码验证通过,程序可以通过控制电子锁实现开锁操作;如果密码错误,程序可以进行相应的处理。

5. 界面设计:通过MATLAB的图形界面设计工具创建交互界面,包括输入密码框、确认按钮和显示结果的部分。

四、密码锁编程的技术要点1. 数据处理:程序需要对用户输入的密码进行适当的加密和比对,确保密码的安全性。

2. 控制操作:程序需要调用相应的接口函数,实现对电子锁的控制和操作。

3. 用户交互:程序需要设计良好的用户界面,让用户能够方便地进行密码输入和了解操作结果。

五、密码锁编程的应用领域1. 家用密码锁:可以用MATLAB编程实现智能门锁、保险柜等设备的密码管理。

2. 商用密码锁:可以将MATLAB编程应用在银行保险柜、企业办公室等需要高安全性的场合。

3. 教育科研:密码锁编程也可以作为MATLAB编程教学和科研实验的一个具体应用案例。

六、密码锁编程的未来发展随着科技的不断发展和智能化水平的提高,密码锁编程也将在更广泛的领域得到应用。

随着物联网和大数据技术的兴起,密码锁编程还可以与其他领域的技术进行深度融合,实现更加智能、安全的密码管理系统。

密码与破译

密码与破译
明文字母表 密文字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ CONSTRUABDEFGHIJKLMPQVWXYZ
在设计密钥时,也可在明文字母表中选择一个特定字母,然 后从该特定字母开始写密钥单词将密钥单词隐藏于其中。例 如,对于上例,选取特定字 母 k,则可得: 明文字母表 密文字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ KLMPQVWXYZCONSTRUABDEFGHIJ
1 2 3 4 5 6 7 8 9 10 11 12 13
1 20 , , 17 3
Y
25
19 , 24
24 24
N
14
O
15
P
Q
R
18
S
19
T
20
U
21
V
22
W X
23 24
Z
0
16 17
Hill2 加密举例

2 1
A
1
1 3 (m o d 2 6 ) 3 (m o d 2 6 ) 0
1
2 (m o d 2 6 ) 1
B A
(m o d 2 6 )
3 9 0
2 (m o d 2 6 ) 1
1 0
8 9
敌方截获 破译
明文(信息)
解密器
密文
接收方
古典密码
替代密码 移位密码 代数密码
随着计算机与网络技术的迅猛发展,大量各具特色的密码体 系不断涌现。离散数学、数论、计算复杂性、混沌、……, 许多相当高深的数学知识都被用上,逐步形成了(并仍在迅 速发展的)具有广泛应用面的 现代密码学 。

matlab实验四 古典密码与破译

matlab实验四 古典密码与破译
8 .6 .9 .5 6 . 9 . 5 . 10 (1) 设 A 5 .8 .4 .9 10 . 6 . 11 . 10
Z 26
中的整数对应:
,验证矩阵 A 能否作为 Hill4 密码体制的加密矩阵.用框
图画出你的验算过程,并编写相应的计算机程序。 (*)(2) 设明文为 HILL CRYPTOGRAPHIC SYSTEM IS TRADJITIONAL.利用上面 的表值与加密矩阵给此明文加密,并将得到的密文解密.画出加密与解密过程的框图并 编写相应的计算机程序。 5. 设已知一份密文为 Hill2 密码体系,其中出现频数最高的双字母是 RH 和 NI, 而在明文语言中,出现频数最高的双字母为 TH 和 HE.由这些信息按表 5 给出的表 值能得到什么样的加密矩阵?
1 A 0 2 4
,求其在模 27 意义下的明文.
编辑说明: 1、 Hill2 密码的解密过程,即为上一题中加密过程的逆过程。 2、将自己的名字的拼音作为 Hill2 密文进行解密,在输入要解密的密文文字(全部为大 写字母或空格)时, 若密文文字总个数为奇数, 则需在最后一个密文字母后面加一个 “哑 字母”或“空格” (在下面的程序中是加与最后一个密文字母相同的字母)。 程序: 模 27 意义下的解密程序 m=27;enmat=[1 2;0 4];demat=[1 13;0 7];ZERO=64;c=[];en=[]; astr=input('输入要解密的密文文字(全部为大写字母或空格):') while any(double(astr)>90 | double(astr)<65& double(astr)~=32) astr=input('输入错误,应该全部为大写字母或空格:') end an=double(astr);lh=length(an); if mod(length(an), 2)==1 an=[an, an(length(an))]; end an=an-ZERO; for i=1:length(an) if an(i)==-32 an(i)=0; end end c=reshape(an, 2, length(an)/2); dn=mod(demat*c, m); en=reshape(dn,1,length(an)); en=en+ZERO; for i=1:length(en) if en(i)==64 en(i)=32; end end en=en(1:lh); char(en)

古典密码与matlab

古典密码与matlab
在长篇文章中,英文字母和字母组合出现 的频率有一定的统计规律


容易被破译
10

任选一篇普通的英文文章。 统计每个英文字母在文章中出现的次数。计 算出每个字母出现的次数在总的字母个数中 所占的百分比。再换几篇文章做同样的统计, 比较统计的结果。 统计每一种双字母组合出现的次数在总次数 中所占的百分比,从中选出出现频率最高的 双字母组合。

字母 A B C D E F G H
表值 字母
I
J K L M
1 2
3
4 5 6
7
8
9 10 11 12 13
N O P Q R S T U V W X Y Z 表值 14 15 16 17 18 19 20 21 22 23 24 25 0 13
例子:想好一个英文单词:red 将密文三个字母为一组分成3组,第1、2、 3组分别用密钥17、4、3 进行加法密码的 解密

16

依次比较上下两行中处于同一列的字母, 统计出上下两个字母相同的列在被统计的 列的总数中所占百分比。
观察对不同的n,这些百分数的变化情况。 是否对某个n,这个百分比显著上升?这说 明什么问题?
17



由一个同学选定一篇稍长一些的文章,选 定一个密钥字,用维吉尼亚密码加密。将 所得的译文交给另外的同学去破译所用的 密钥字的长度。


31
有关的MATLAB 命令(double)



double: 如果是字符型的,则给出每一个字符的 ASCII码。 语法: double(X) 例子: X=double(‘a’) Returns X=
97
32

数学建模实验报告古典密码与破译

数学建模实验报告古典密码与破译

古典密码与破译一、实验目的及意义本实验主要涉及代数,利用模运算意义下的矩阵乘法、求逆矩阵、线性无关、线性空间与线性变换等概念和运算,学习古典密码体制的加密、解密和破译过程.二、实验内容1.Hill2加密;2.Hill2解密。

三、实验步骤1. 开启软件平台——MA TLAB,开启MA TLAB编辑窗口;2. 根据加密解密算法步骤编写M文件1.保存文件并运行;2.观察运行结果(数值或图形);3.根据观察到的结果和体会写出实验报告。

四、实验要求与任务根据实验内容和步骤,完成以下实验,要求写出实验报告。

1. 实际问题(甲) 的修正:按照甲方与乙方的约定,他们之间的密文通信采用Hill2 密码,密钥为二阶矩阵1204A⎛⎫= ⎪⎝⎭且汉语拼音的26 个字母以及空格(字母A~Z 的表值为1~26,空格的表值为0)与0~26 之间的整数建立一一对应的关系,称之为字母的表值,试修正表1、表2 以及附录中的程序,以给出模27 意义下矩阵可逆的判别方法和具体求法.2. 若将你姓名的拼音作为明文,例如:赵本山(ZHAO BEN SHAN,含空格),密钥等参见练习1,求其在模27 意义下的Hill2密文.3. 若将你姓名的拼音作为Hill2密文,例如:赵本山(ZHAO BEN SHAN,含空格),密钥等参见练习1,求其在模27 意义下的明文.五. 程序代码及运行结果(经调试后正确的源程序)1.实际问题(甲) 的修正:按照甲方与乙方的约定,他们之间的密文通信采用Hill2 密码,密钥为二阶矩阵1204A⎛⎫= ⎪⎝⎭且汉语拼音的26 个字母以及空格(字wilyes11收集博客(与学习无关):/u/1810231802母A~Z 的表值为1~26,空格的表值为0)与0~26 之间的整数建立一一对应的关系,称之为字母的表值,试修正表1、表2 以及附录中的程序,以给出模27 意义下矩阵可逆的判别方法和具体求法.表1 明文字母的表值①求模27倒数表(prog1_MOD27.m)程序代码:m=27;for a=1:mfor i=1:mif mod(a*i,m)==1fprintf('%d 的模%d倒数是: %d\n',a,m,i);break;end;end;end运行结果:1 的模27倒数是: 12 的模27倒数是: 144 的模27倒数是: 75 的模27倒数是: 117 的模27倒数是: 48 的模27倒数是: 1710 的模27倒数是: 1911 的模27倒数是: 513 的模27倒数是: 2514 的模27倒数是: 216 的模27倒数是: 2217 的模27倒数是: 819 的模27倒数是: 1020 的模27倒数是: 2322 的模27倒数是: 1623 的模27倒数是: 2025 的模27倒数是: 1326 的模27倒数是: 26②判断二阶矩阵在模27意义下是否可逆,可逆则求其逆(prog1.m)程序代码:m=27;aa=input('输入一个2×2的矩阵,格式:[a11 a12;a21 a22]:')while size(aa)~=[2 2]aa=input('输入一个2×2的矩阵,格式:[a11 a12;a21 a22]:')enda=det(aa);bb=aa;if gcd(m,a)~=1disp(' 该矩阵不可逆')elsefor i=1:mif mod(a*i,m)==1antaa=i;break;endendastar=[aa(2,2) -aa(1,2);-aa(2,1) aa(1,1)];invaa=mod(antaa*astar,m);disp(['原矩阵是:',mat2str(aa),',它的逆矩阵(mod',num2str(m),')是:',mat2str(invaa)]) end运行结果:输入一个2×2的矩阵,格式:[a11 a12;a21 a22]:[1 2;0 4]aa =1 20 4原矩阵是:[1 2;0 4],它的逆矩阵(mod27)是:[1 13;0 7]2.若将你姓名的拼音作为明文,例如:赵本山(ZHAO BEN SHAN,含空格),密钥等参见练习1,求其在模27 意义下的Hill2密文.程序代码:(prog2.m)m=27;enmat=[1 2;0 4];demat=[1 13;0 7];ZERO=64;c=[];en=[];fprintf('本组成员的姓名为吴亚山李杰赵传来,拼音为:\n')fprintf('WU YA SHAN LI JIE ZHAO CHUAN LAI\n')fprintf('以[1 2;0 4]为密钥对此拼音串加密\n')astr=['WU YA SHAN LI JIE ZHAO CHUAN LAI'];an=double(astr);if mod(length(an),2)==1an=[an,an(length(an))];endan=an-ZERO;for i=1:length(an)if an(i)==-32an(i)=0;endendc=reshape(an,2,length(an)/2);dn=mod(enmat*c,m);en=reshape(dn,1,length(an));en=en+ZERO;for i=1:length(en)if en(i)==64en(i)=32;endenden=en(1: length(an));disp(['密文是:',char(en)])运行结果:本组成员的姓名为吴亚山李杰赵传来,拼音为:WU YA SHAN LI JIE ZHAO CHUAN LAI以[1 2;0 4]为密钥对此拼音串加密密文是:KCWSA HEBBXUI AIE OEDFFLWCBBXUSI3.若将你姓名的拼音作为Hill2密文,例如:赵本山(ZHAO BEN SHAN,含空格),密钥等参见练习1,求其在模27 意义下的明文.程序代码:(prog3.m)m=27;enmat=[1 2;0 4];demat=[1 13;0 7];ZERO=64;c=[];en=[];fprintf('本组成员的姓名为吴亚山李杰赵传来,拼音密文为:\n')fprintf('KCWSA HEBBXUI AIE OEDFFLWCBBXUSI\n')fprintf('以[1 13;0 7]为密钥对此拼音串密文解密\n')astr=['KCWSA HEBBXUI AIE OEDFFLWCBBXUSI'];an=double(astr);if mod(length(an),2)==1an=[an,an(length(an))];endan=an-ZERO;for i=1:length(an)if an(i)==-32an(i)=0;endendc=reshape(an,2,length(an)/2);dn=mod(demat*c,m);en=reshape(dn,1,length(an));en=en+ZERO;for i=1:length(en)if en(i)==64en(i)=32;endenden=en(1: length(an));disp(['明文是:',char(en)])运行结果:本组成员的姓名为吴亚山李杰赵传来,拼音密文为:KCWSA HEBBXUI AIE OEDFFLWCBBXUSI以[1 13;0 7]为密钥对此拼音串密文解密明文是:WU YA SHAN LI JIE ZHAO CHUAN LAI六.实验总结本实验主要涉及代数,利用模运算意义下的矩阵乘法、求逆矩阵、线性无关、线性空间与线性变换等概念和运算,学习古典密码体制的加密、解密和破译过程.实验中解决了如下问题:求模27倒数表;判断二阶矩阵在模27意义下是否可逆,可逆则求其逆;求明文字符串在模27意义下的Hill2密文;求密文字符串在模27意义下的Hill2密文。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
③ 将明文字母分组。 Hill2 使用的是二阶矩阵,所以将明 文字母每 2 个一组(可以推广至Hill n密码)。查出每个 字母的表值,这样,每组字母构成一个二维列向量 。 若最后仅剩一个字母,则补充一个没有实际意义的哑字母 (哑元)。这样使得每组都有 2 个字母, ④ 令 = A ,由 的两个分量反查字母表值表,得到 相应的两个字母,即为密文字母。
1 A A | A|
1
A*为 A 的伴随矩阵
设 B=k A*为 A 的 模 26 逆,其中 k 为待定系数
BA k | A | E BA E (mod 26) k | A | 1(mod 26)
k | A |1 (mod 26)
本计算方法可推广到求矩阵 A 的 模 m 逆矩阵

8 19 19 24 4 , 4 , 24 , 24
在模运算下解方程组: A =
A (mod 26) (mod 26)
1
问题:如何计算 A1 (mod 26) ?
模 m 逆矩阵的计算
① 通讯双方确定加密矩阵 ( 密钥) 和字母的表值对应表 ② 将明文字母分组,通过查表列出每组字母对应的向量
若明文只含奇数个字母,则补充一个哑元 ③ 令 = A mod(m) ,由 的分量反查字母表值表,
得到相应的密文字母
Hill2 解密过程总结
① 将密文字母分组,通过查表列出每组字母对应的向量 ② 求出加密矩阵 A 的 模 m 逆矩阵 B
V
22
W X
23 24
Z
0
16 17
Hill2 加密举例
将上述 4 个二维向量左乘密钥矩阵 A 得:
16 , 12
27 , 12
67 , 72
72 72
作模 26 运算,将所有的数都化为 0 到 25 之间的整数:
③ 令 = B mod(m) ,由 的分量反查字母表值表,
得到相应的明文字母
Hill2 解密举例
甲方收到乙方(己方)的一个密文信息,内容为: WKVACPEAOCIXGWIZUROQWAB ALOHDKCEAFCLWWCVLEMIMCC 按照甲方与乙方的约定,他们之间采用 Hill2密码,密钥 1 2 为 A ,字母表值见下表,问这段密文的原文 0 3 是什么? A 1 B 2 C 3 D 4 E 5 F 6 G 7 H 8 I 9 J K L M 10 11 12 13
Hill2 解密举例
序 分组 密文 明文 分组 号 密文 表值 表值 明文 13 L 12 2 B O 15 5 E 14 H 8 14 N D 4 10 J 15 K 11 9 I C 3 1 A 16 E 5 13 M A 1 9 I 17 F 6 4 D C 3 1 A 18 L 12 14 N W 23 25 Y 序 分组 密文 明文 分组 号 密文 表值 表值 明文 19 W 23 21 U C 3 1 A 20 V 22 14 N L 12 4 D 21 E 5 5 E M 13 13 M 22 I 9 9 I M 13 13 M 23 C 3 1 A C 3 1 A
N O P Q R S T U V W X Y Z 14 15 16 17 18 19 20 21 22 23 24 25 0
Hill2 解密举例
① 将密文字母分组,通过查表列出每组字母对应的向量 ② 求出加密矩阵 A 的 模 26 逆矩阵
1 8 B 0 9
③ 用 B 左乘每组密文字母组成的向量,然后再反查字母
3 2 1 8 9 (mod 26) 0 9 0 1
16 1 12 , 12 ,
15 20 20 , 20

8 19 19 24 4 , 4 , 24 , 24
N O P Q R S T U V W X Y Z 14 15 16 17 18 19 20 21 22 23 24 25 0 注:这里假定明文中只使用 26 个大写字母
Hill2 密码的加密过程
② 选择一个 二阶可逆整数方阵 A,称为Hill2密码的 加 密矩阵,它是加密体制的 “密钥”,是加密的关键,仅 通讯双方掌握。
Hill2 解密过程
1 设加密矩阵 A 0
1
2 3
3 2 | A | 3, A 0 1

1 3 2 A (mod 26) 3 (mod 26) (mod 26) 0 1
B A1 (mod 26)
数学实验
实验六
古典密码与破译
问题背景和实验目的
保密通讯无论在军事、政治、经济还是日常 生活中都起着非常重要的作用。 为了将信息传递给己方的接受者,同时又要 防止他人(特别是敌人)知道信息的内容,必须 将要传递的信息(明文)加密,变成密文后发送 出去,这样,即使敌方得到密文也看不懂,而己 方的接受者收到密文后却可以按照预先定好的方 法加以解密。
问题背景和实验目的
密码可分为古典密码和现代密码
古典密码:以字符为基本加密单元; 现代密码:以信息块为基本加密单元。
本实验主要介绍古典密码的加密与破译原理, 同时介绍如何用 Matlab 编程来实现加密、解密和 破译过程。
加密信息传递过程
明文(信息)
加密器
密文 普 通 信 道
发送方
密文
一组新的向量
问题:怎样解密?
Hill2 解密过程
解密:加密的逆过程,将加密过程逆转回去即可。 例:怎么得到密文 “ PLALOTTT ” 的原文?
先查出密文字母 “ PL AL OT TT ” 所对应的向量:
16 , 12
1 , 12
15 , 20
模 m 可逆
记 Z m {0,1, 2, ..., m 1}
定义 1:设 A 为定义在集合 Zm 上的 n 阶方阵,若存在一个定 义在 Zm 上的方阵 B,使得
AB BA E (mod m) 则称 A 模 m 可逆, B 为 A 的 模 m 逆矩阵,记为 B A1 (mod m )
思考:如何用 Matlab 编程来找出所有模 m 倒
数的整数及其模 m 倒数? m=26 时的 Matlab 程序见教材第 98 页
fulu1.m 可以用来判断一个 2 阶矩阵在模 26 运算下 是否可逆,并在可逆的前提下给出其模 26 逆矩阵。
Hill2 解密过程
16 1 12 , 12 , 15 20 20 , 20
用 B 左乘密文对应的向量得:
16 112 B , 12 108 15 175 B , 20 180 1 97 B , 12 108 20 180 B 20 180
模 26 运算后得:
8 19 19 24 4 , 4 , 24 , 24
查表后得明文分别为: HD
SD
SX
XX
Matlab 的 Hill2 加密程序见 附录 2,相应解密程序见 附录 3。
Hill2 加密过程总结
定义 2:设 a Zm ,若存在 b Zm 使得 ab=1 (mod m) ,则 称 b 为 a 的 模 m 倒数 或乘法逆,记作 b = a-1 (mod m) 。 注: a , b 都是 Zm 中的数
模 m 可逆
问题:是否 Zm 中所有的数都存在模 m 倒数?
a 存在唯一的模 m 倒数 a 与 m 无公共素数因子 命题:定义在集合 Zm 上的 n 阶方阵 A 模 m 可逆的充要条 件是:m 和 det(A) 无公共素数因子,即 m 与 det(A) 互素。
发 送
敌方截获 破译
明文(信息)解密器密文接收方Hill2 密码的加密过程
Hill2 密码中所用的数学手段是 矩阵运算。
加密过程: ① 将汉语拼音的 26 个字母 与 0 到 25 之间的整数建 立一一对应关系,称为字母的 表值,然后根据明文字 母的表值,将明文信息用数字表示。
设通讯双方所给出的 26 个字母的表值如下: A 1 B 2 C 3 D 4 E 5 F 6 G 7 H 8 I 9 J K L M 10 11 12 13
Hill2 加密举例
例: 设明文为“HDSDSXX”(华东师大数学系), 1 2 试给出这段明文的 Hill2 密文。 A
0 3
解: 将明文字母分组: HD SD SX

XX
1 2 最后的一个字母 X 为哑字母,无实际意义。 A 0 3
查表得每组字母的表值,得到 4 个二维列向量:
A B C D E F G H I J
1 2 3 4 5 6 7 8 9 10 11 12 13
N O P
Q R S
T
U V W X Y Z
14 15 16 17 18 19 20 21 22 23 24 25 0
Hill2 加密过程
明文字母 分组 查表值 左 乘 模运算 反查表值 一组向量 加 密 矩 阵
27 , 12
20 20
72 经过模 26 运算得来 72
16 上面的向量是由 , 12
67 , 72
的,现在的问题是怎样逆转回去?
在模运算下解方程组: A =
Hill2 加密举例
反查字母表值得每个向量对应的字母组为:
相关文档
最新文档