数学实验—Hill密码的加密、解密与破译
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、 建立数学模型 2.加密过程:
黔南民族师范学院数学实验报告
(1).根据所给的明文把其进行依次逐对分组,然后再根据所给字母表值 写成一个数据的二阶矩阵 如 I 18 的形式,如果最后一组只有一个字母
H 4
则补充一个没有意义的哑字母。 ( 2 ) . 选 择 A1 作 为 加 密 矩 阵 即 加 密 矩 阵 的 密 钥 , 然 后 用
Hill 密码的加密、解密与破译(A)
一、 实验目的
1. 复习线性代数, 矩阵, 线性空间与线性变换等概念和运算. 2. 熟悉 Hill 密码体制的加密, 解密和破译过程. 3. Hill 密码体制的加密, 解密和破译过程的 Matlab 编程实践.
实验问题
Hill2 密码的加密, 解密和破译 1.利用所介绍的 Hill2 密码体制原理, 根据给定的 26 个英文字母的乱序表值(表 A1) 表 A1: 26 个英文字母的乱序表值
明文 加密矩阵 密文 普通信道 敌方截获 加密矩阵的逆矩阵 明文
3. (1).把所截获的密文 SDJC 进行依次逐对分组,然后再根据所给字母表值 写成数据的二阶矩阵 1 : D 4
I 9 IJIA 的矩阵 1 : J 2 10 I 9 A 1 x2 所有按解密过程有 B * 1 1 和 B * 2 2 x4 S 19 J 10 2 : C 再给出对应明文 3
A 1 N 14 B 2 O 15 C 3 P 16 D 4 Q 17 E 5 R 18 F 6 S 19
表 1 明文字母的表值
G 7 T 20 H 8 U 21 I 9 V 22
J 10 W 23
K 11 X 24
Baidu Nhomakorabea
L 12 Y 25
M 13 Z 0
甲方截获了一段密文:BKOPGATRHMMBFCSDJCCAUU 经分析这段密文是用 Hill2 密码编译的 , 且这段密文的字母 SDJC 依次代表字母 IJIA,请破译这段密文的内容
- VIII -
Hill 密码的加密、解密与破译 Y(i)='L'; elseif X(i)==13 Y(i)='M'; elseif X(i)==7 Y(i)='N'; elseif X(i)==3 Y(i)='O'; elseif X(i)==1 Y(i)='P'; elseif X(i)==19 Y(i)='Q'; elseif X(i)==6 Y(i)='R'; elseif X(i)==12 Y(i)='S'; elseif X(i)==24 Y(i)='T'; elseif X(i)==21 Y(i)='U'; elseif X(i)==17 Y(i)='V'; elseif X(i)==14 Y(i)='W'; elseif X(i)==22 Y(i)='X'; elseif X(i)==11 Y(i)='Y'; elseif X(i)==9 Y(i)='Z'; else error('请正确输入 0 到 25 的数字') end end end
(2).设一个二阶矩阵 B=
x1 x3
即有
19 x1 4 x 2 9 19 x3 4 x 4 10
和
10 x1 3 x 2 9 10 x3 3 x 4 1
然后解出结果后模掉 26 得出 B 即解密矩阵。 (3) .按照求出的 B, 把密文分组然后再根据所给字母表值写成一个数据 的二阶矩阵,然后左乘以 B 就可以得到明文。 三、 问题求解和程序设计流程 2、1 分别计算 4 个矩阵行列式的值为:3,22,4,21
黔南民族师范学院
数学实验报告
题目
Hill 密码的加密、解密与破译
制作成员
李成燕 黎庭庭 孙礼磊
班级
学号 1105015152
任务
问题求解和程序设计 流程 建立数学模型 上机实验结果的分析 与结论
11 数应(1) 班
110501535 1105015119
2013 年 5 月 26 日
Hill 密码的加密、解密与破译
验证矩阵 Ai(i = 1; 2; 3; 4)能否作为 Hill2 密码体制的加密矩阵. 2. 设明文为 HILL CRY PTOGRAPHIC SY STEM IS TRADITIONAL 利用上面的表 值, 任选一个加密矩阵 Ai 给此明文加密, 并将得到的密文解密. 画出加密与解密过程 的框图并编写相应的 Matlab 程序. 3.
黔南民族师范学院数学实验报告 end end end 4、将数字转换为字母: function Y=num_letter(X) %按照数学实验书 P111 表 10.4 将数字转化为字母 %参数说明,输入项:X 由每个数字组成的行向量 % 输出项:Y 由每个字母组成的字符串 %例如 5 23 2 20 对应的数字是 A B C D %其调用格式为:Y=num_letter([5,23,2,20]). n=length(X); if rem(X,2)~=0 X(n+1)=X(n); n=n+1; end for i=1:n if X(i)==5 Y(i)='A'; elseif X(i)==23 Y(i)='B'; elseif X(i)==2 Y(i)='C'; elseif X(i)==20 Y(i)='D'; elseif X(i)==10 Y(i)='E'; elseif X(i)==15 Y(i)='F'; elseif X(i)==8 Y(i)='G'; elseif X(i)==4 Y(i)='H'; elseif X(i)==18 Y(i)='I'; elseif X(i)==25 Y(i)='J'; elseif X(i)==0 Y(i)='K'; elseif X(i)==16
A1乘以得到一个新的二维矩阵 ,模掉 26然后反查 字母表得到的字母就是密文。
解密过程: (1).跟据密文把其进行依次逐对分组,然后再根据所给字母表值写成 一个数据的二阶矩阵 。 (2)根据密钥 A1 求出密钥的逆矩阵 A11 ,然后 A11乘以 得到新的矩阵模 掉 26 后反查字母表得出明文。 过程框图如下图:
A B C D E F G 5 23 2 20 10 15 8 N O P Q R S T 7 3 1 19 6 12 24 设 A1
H I J K 4 18 25 0 U V W X 21 17 14 22
L 16 Y 11
M 13 Z 9
1 4 2 4 8 3 5 4 , A2 , A3 , A4 0 3 9 3 12 5 23 7
黔南民族师范学院数学实验报告 Y(i)=9; else error('请正确输入 A 到 Z 的字母') end end end function Y=letter_num(X) %按照数学实验书 P111 表 10.4 将字母转化为数字 %参数说明,输入项:X 由每个字母组成的字符串 % 输出项:Y 由每个数字组成的行向量 %例如 A B C D 对应的数字是 5 23 2 20 %其调用格式为:Y=letter_num('ABCD'). n=length(X); if rem(X,2)~=0 X(n+1)=X(n); n=n+1; end Y=zeros(1,n); for i=1:n if X(i)=='A' Y(i)=5; elseif X(i)=='B' Y(i)=23; elseif X(i)=='C' Y(i)=2; elseif X(i)=='D' Y(i)=20; elseif X(i)=='E' Y(i)=10; elseif X(i)=='F' Y(i)=15; elseif X(i)=='G' Y(i)=8; elseif X(i)=='H' Y(i)=4; elseif X(i)=='I'
将字母转化为数字: function Y=letter_num(X) %按照数学实验书 P111 表 10.4 将字母转化为数字 %参数说明,输入项:X 由每个字母组成的字符串 % 输出项:Y 由每个数字组成的行向量 %例如 A B C D 对应的数字是 5 23 2 20 %其调用格式为:Y=letter_num('ABCD'). n=length(X); if rem(X,2)~=0 X(n+1)=X(n); n=n+1; end Y=zeros(1,n); for i=1:n if X(i)=='A' Y(i)=5; elseif X(i)=='B' Y(i)=23; elseif X(i)=='C' Y(i)=2; elseif X(i)=='D' Y(i)=20; elseif X(i)=='E' Y(i)=10;
- II -
Hill 密码的加密、解密与破译
可以判断,A1 和 A4 能作为加密矩阵。 2、2
求倒数的程序:
function b=Hill2_countdown(a) %在 mod 26 情况下求倒数 % if a==1 b=1; elseif a==3 b=9; elseif a==5 b=21; elseif a==7 b=15; elseif a==9 b=3; elseif a==11 b=19; elseif a==15 b=7; elseif a==17 b=23; elseif a==19 b=11; elseif a==21 b=5; elseif a==23 b=17; elseif a==25; b=25; else error('该数在 mod 26 下没有倒数')
黔南民族师范学院数学实验报告
end end
判断矩阵 A 是否为加密矩阵并求其逆矩阵:
function A1=Hill2_key(A) %判断 A 矩阵是否能作为加密矩阵并求逆矩阵 a=mod(det(A),26); if a==13|rem(a,2)==0 error('A 矩阵不能作为加密矩阵') end b=Hill2_countdown(a); A1=mod((b*[A(2,2) -A(1,2);-A(2,1) A(1,1)]),26); end
- VI -
Hill 密码的加密、解密与破译 Y(i)=18; elseif X(i)=='J' Y(i)=25; elseif X(i)=='K' Y(i)=0; elseif X(i)=='L' Y(i)=16; elseif X(i)=='M' Y(i)=13; elseif X(i)=='N' Y(i)=7; elseif X(i)=='O' Y(i)=3; elseif X(i)=='P' Y(i)=1; elseif X(i)=='Q' Y(i)=19; elseif X(i)=='R' Y(i)=6; elseif X(i)=='S' Y(i)=12; elseif X(i)=='T' Y(i)=24; elseif X(i)=='U' Y(i)=21; elseif X(i)=='V' Y(i)=17; elseif X(i)=='W' Y(i)=14; elseif X(i)=='X' Y(i)=22; elseif X(i)=='Y' Y(i)=11; elseif X(i)=='Z' Y(i)=9; else error('请正确输入 A 到 Z 的字母')
- IV -
Hill 密码的加密、解密与破译 elseif X(i)=='F' Y(i)=15; elseif X(i)=='G' Y(i)=8; elseif X(i)=='H' Y(i)=4; elseif X(i)=='I' Y(i)=18; elseif X(i)=='J' Y(i)=25; elseif X(i)=='K' Y(i)=0; elseif X(i)=='L' Y(i)=16; elseif X(i)=='M' Y(i)=13; elseif X(i)=='N' Y(i)=7; elseif X(i)=='O' Y(i)=3; elseif X(i)=='P' Y(i)=1; elseif X(i)=='Q' Y(i)=19; elseif X(i)=='R' Y(i)=6; elseif X(i)=='S' Y(i)=12; elseif X(i)=='T' Y(i)=24; elseif X(i)=='U' Y(i)=21; elseif X(i)=='V' Y(i)=17; elseif X(i)=='W' Y(i)=14; elseif X(i)=='X' Y(i)=22; elseif X(i)=='Y' Y(i)=11; elseif X(i)=='Z'