实验十 Hill密码的加密、解密与破译
- 格式:doc
- 大小:59.00 KB
- 文档页数:5
数模实验一 实验内容:用MATLAB 实现 Hill n 密码程序(包括加密、解密及破译三个环节)一 实验目的实现Hill n 密码体系的关键环节(加密、解密、破译)二 预备知识熟悉mod 、det 、find 等Matlab 命令三 实验内容与要求(1)假设加密矩阵为A =⎪⎪⎭⎫ ⎝⎛3201,用MATLAB 编制程序,加密下面一段明文:SHUXUEJIANMOJINGSAI 命令结果 function hill()%输入密钥disp('输入密钥(矩阵)的维数');n=input('');disp('输入密钥(矩阵,按行输入)');key=zeros(n,n);for j=1:nfor k=1:nkey(j,k)=input('');endend IXQTEOBACPQSBABUU CAAi=1; while i<m+1B=message(i:i+n-1)';a=key*B;A(i:i+n-1)=a';i=i+n;endfor i=1:m if A(i)>26A(i)=mod(A(i),26);endA(i)=A(i)+64;endstr=char(A);fprintf('密文为%s',str)(2)假设加密矩阵为A =1103⎛⎫ ⎪⎝⎭,用MATLAB 编制程序,解密下面一AXSTZOSAOPBSTKSAN OPSAHAUUNSUUAKGAUZC K KOP D O 段密文: 命令结果 function hill2()%输入密钥disp('输入密钥(矩阵)的维数');n=input('');YTMHOSTCEVUEEGTC YGEVTCICPKGEPKLG HCU@NGEVSS(3)甲方截获了一段密文:BKOPGATRHMMBFC SDJC CAUU经分析这段密文是用Hill2密码编译的,且这段密文的字母SDJC依次代表字母IJIA,请破译这段密文的内容(4)编写通用的Hill密码软件(Matlab)。
Hill 密码的加密、解密和破译 实验报告吴林柱 5100309888实验任务2、利用所介绍的Hill 密码体制原理,根据所给定的26个英文字母的乱序表值(见表),设计与Hill 4密码体制的加密、解密与破译框图并建立必要的计算机程序。
设英文26个字母以下的乱序表与Z 26中的整数对应: A B C D E F G H I J K L M 5 23 2 20 10 15 8 4 18 25 0 16 13 N O P Q R S T U V W X Y Z 731196122421171422119(1)设⎪⎪⎪⎪⎪⎭⎫⎝⎛=4116109485105965968A ,验证矩阵A 能否作为Hill 4,用框图画出你的验算过程,并编写相应的计算机程序。
(2)设明文为HILL CRYPTOGRAPHIC SYSTEM IS TRADITIONAL 。
利用上面的表值与加密矩阵给此明文加密,并将得到的密文解密。
画出加密与解密过程的框图并编写相应的计算机程序。
(3)已知在上述给定值下的一段密文为JCOWZLVBDVLEQMXC ,对应的明文为DELAY OPERATIONSU 。
能否确定对应的加密矩阵?给出你的判断过程。
4、如下的密文据表10.1以Hill 加密,密文为VIKYNOTCLKYRJQETIRECVUZLNOJTUYDI MHRFITQ 。
已获知其中相邻字母LK 表示字母KE ,试破译这份密文。
5、找出元素属于Z 26的所有可能的Hill 密码加密矩阵。
若截获了如下一段密文UTCQCVFOYQUVMGMGULFOLEYHDUDOPEASWXTIFBAMWT 且知他是根据表10.1按Hill 密码 体制加密的,能否破译?实验解答2、(1)由定义可知,元素属于Z m 的方阵A 模m 可逆的充要条件是,m 和det A 没有公共素因子。
因此,框图如下:求矩阵A 的行列式 det A 若det A 与26没有公共素因子,则A 可用。
hill密码加密例题Hill密码是一种基于线性代数的密码算法,它使用矩阵运算来进行加密和解密。
下面我将给出一个Hill密码加密的例题,并从多个角度进行全面解答。
假设我们要加密的明文是:"HELLO",并且我们选择使用2x2的密钥矩阵进行加密。
密钥矩阵可以表示为:K = [[2, 3],。
[1, 4]]现在,我们将按照Hill密码的加密步骤来进行加密:步骤1: 明文转化为数字。
首先,我们需要将明文转化为对应的数字。
通常可以使用字母表来进行映射,比如A对应0,B对应1,以此类推。
在这个例题中,我们使用A=0,B=1,C=2,...,Z=25的映射方式。
所以,"HELLO"可以转化为[7, 4, 11, 11, 14]。
步骤2: 分组。
然后,我们将数字分组,每个组的长度与密钥矩阵的行数相同。
在这个例题中,由于密钥矩阵是2x2的,所以我们将数字分组为[[7, 4], [11, 11], [14]]。
步骤3: 矩阵乘法。
接下来,我们将每个分组与密钥矩阵进行矩阵乘法运算。
对于每个分组,我们将其转化为一个行向量,并与密钥矩阵进行乘法运算。
在这个例题中,第一个分组[7, 4]与密钥矩阵K进行乘法运算,得到的结果为[2, 29]。
步骤4: 取模运算。
然后,我们对矩阵乘法的结果进行取模运算,通常取模26。
这是因为我们使用了26个字母的字母表。
在这个例题中,对于矩阵乘法的结果[2, 29],我们进行取模26运算,得到[2, 3]。
步骤5: 数字转化为密文。
最后,我们将取模运算的结果转化为对应的字母。
在这个例题中,[2, 3]对应的字母是"C"和"D"。
所以,加密后的密文为"CD"。
综上所述,使用2x2的密钥矩阵K对明文"HELLO"进行Hill密码加密后得到的密文为"CD"。
从多个角度来看,Hill密码的加密过程涉及到了线性代数的矩阵运算,包括矩阵乘法和取模运算。
实验内容:Hill n 密码体系 一 实验目的实现Hill n 密码体系的关键环节(加密、解密、破译) 二 预备知识熟悉mod 、det 、find 等Matlab 命令 三 实验内容与要求(1)假设加密矩阵为A =⎪⎪⎭⎫⎝⎛3201,用M A T L A B 编制程序,加密下面一段明文:SHUXUEJIANMOJINGSAI(2)假设加密矩阵为A =1103⎛⎫⎪⎝⎭,用M A T L A B编制程序,解密下面一段密文:AXSTZOSAOPBSTKSAN OPSAHAUUNSUUAKGAUZC K KOP D O(3)甲方截获了一段密文:BKOPGATRHMMBFC SDJC CAUU经分析这段密文是用Hill 2密码编译的,且这段密文的字母SDJC依次代表字母IJIA ,请破(4)编写通用的Hill密码软件(Matlab或C++) Shiyan.m代码function mima=shiyan(x,A)n=length(x);x2=double(x)-96;x3=reshape(x2,2,n/2);x4=A*x3;x5=mod(reshape(x4,1,n),26)+96;x5(find(x5==96))=122;mima=char(x5);sy2.m代码:function mingwen=sy2(x,A)n=length(x);x2=double(x)-96;x3=reshape(x2,2,n/2);a=floor(det(A));aa=qiumoni(a);A_inv=mod(aa*det(A)*inv(A),26);x4=A_inv*x3;x5=mod(reshape(x4,1,n),26)+96;x5(find(x5==96))=122;mingwen=char(x5);qiumoni代码:function aa=qiumoni(a)a=a;aa=0;for i=1:25if mod(a*i,26)==1aa=i;breakendendif aa==0disp('没有该模的逆')endsy3.m代码:function A=sy3(a1,a2)C=reshape(double(a1)-96,2,2);P=reshape(double(a2)-96,2,2);c=mod(det(C),26);cc=qiumoni(c);%qiumoni请参见(2)C_inv=mod(cc*det(C)*inv(C),26);A=mod(P*C_inv,26)%使用说明:%先建立Shiyan.m、sy2.m、qiumoni.m、sy3.m三个M文件%1、进行加密操作:% 将加密的内容写在“x=’’”中的单引号中,将加密矩阵写在“A=’’”的单引号中,接着%输入“mima=shiyan(x,A)”即可得到密文。
Hill密码加密的密文破译姓名:谭周兴学号:13091076明文:breathtaking密文:RUPOTENTOIFVHill密码:将明文的每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n 维向量,跟一个n×n的矩阵M相乘,再将得出的结果MOD26,得到密文。
密钥矩阵M必须是在Z26上可逆才能译码。
明文对应的数字:1,17,4,0,19,7,19,0,10,8,13,6密文对应的数字:17,20,15,14,19,4,13,19,14,8,5,21分析:一共有12位数字,则密钥矩阵可能是1*1、2*2、3*3、4*4、6*6、12*12(为12的因子)维的。
根据已有的明密文不能破译4*4及其以上的密钥矩阵,另外明文里面含有0,从而排除1*1的情况,因而考虑2*2阵和3*3阵。
1、2*2矩阵:将明文按行写成一些2*2矩阵,如A1=[11740],B=[17201514]。
A1M(mod26)=B,矩阵A1在实数域内是可逆矩阵,判断A1在Z26上是否可逆,计算det(A1)(mod 26)=10,与26不互素,故A1不可逆,M无法根据A1得到。
继续上述步骤,A2=[40197]。
计算det(A2)(mod 26)=2,与26不互素,故A2不可逆,M无法根据A2得到。
det(A3)(mod 26)=23,和M互素,如图计算A3的代数余子式A*=(detA)*A-1mod26(矩阵元素元素属于实数域)和A-1.A-1=A*|A|-1(这里的矩阵元素和行列式的逆属于Z26.|A|-1计算用如下代码即可:#include<stdio.h>void main(){int i,a;scanf("%d",&a);for(i=0;i<=25;i++){if((a*i)%26==1)break;}printf("%d",i);}算得M=[13 1;12 9]。
数学实验:希尔密码的破译一、问题重述:找出元素属于Z(26)的所有可能的Hill密码加密矩阵,若截获了如下一段密文:CKYNOHKQMAXJQBHAZWUHDAOQWXIPQZBKMPUTIPVSWSBYXKKWQHADMBDM且知道它是根据表10.1按Hill(2)密码加密的,你能否将他解密?二、基本思路:(1)先穷举列出所有可以作为解密矩阵的矩阵,然后依次解密得到明文对应的数字矩阵,通过程序运行可以得到明文(2)通过频率统计攻击不符合要求的明文进行筛选,得到符合要求的明文,然后进行人工选择即可。
三、解答:1、将字母转化为数字矩阵。
我们通过matlab编程实现,代码如下:function [Z] = zimu_shuzi(X,a)%a是字符串长度除以2X=strrep(X,'Z','@');Y=abs(X)-64;for i=1:aZ(:,i)=Y(1,2*i-1:2*i)';endZ=mod(Z,26);%此程序经检验无误。
End经过此程序后我们得到2、将此值赋给C,对C应用程序暴力破解,其代码如下:function[]= Copyblpj_hypy(a,d,C)%输入解密矩阵的第一个元素a,密文长度的一半d,及密文矩阵。
for b=0:25for i=0:25for j=0:25X=[a,b;i,j];D=det(X);D=round(D);if gcd(D,26)~=1elseH=mod(X*C,26);D=0;for k=1:dD(1,2*k-1:2*k)=H(:,k)';endD=mod(D,26);M=char(D+64);M=strrep(M,'@','Z');%由于表10-1中Z的值域ascii码不能应用其他字母的对应关系,所以先用替换的方法换成@保证程序正确运行ifsize(strfind(M,'I'),2)>=3&&size(strfind(M,'N'),2)>=3&&size(strfind(M, 'D'),2)<=2&&size(strfind(M,'C'),2)<=2&&size(strfind(M,'L'),2)<=2&&siz e(strfind(M,'Q'),2)<=2&&size(strfind(M,'K'),2)<=2&&size(strfind(M,'V' ),2)==0%通过汉语拼音的频率来攻击、筛选。
Hill 密码Hill 体制是1929年由Lester S.Hill 发明的,它实际上就是利用了我们熟知的线性变换方法,是在26Z 上进行的。
Hill 体制的基本思想是将n 个明文字母通过线性变换转化为n 个密文字母,解密时只需做一次逆变换即可,密钥就是变换矩阵。
设明文n n Z m m m m 2621),,(∈⋯+=,密文n n Z c c c c 2621),,.,(∈⋯=,密钥为26Z 上的n n ⨯阶可逆方阵n n ij k K ⨯=)(,则26mod 26mod 1-==cK m mK c 解密:明文加密:密文具体过程:1、 假设要加密的明文是由26个字母组成,其他字符省略。
2、 将每个字符与0-25的一个数字一一对应起来。
(例如:a/A —0,b/B —1,……z/Z —25)。
3、 选择一个加密矩阵n n A ⨯,其中矩阵A 必须是可逆矩阵,例如⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=15227132102123916296101571823055117A 4、 将明文字母分别依照次序每n 个一组(如果最后一组不足n 个的话,就将其补成n个),依照字符与数字的对应关系得到明文矩阵ming n n len ⨯/。
5、 通过加密矩阵A ,利用矩阵乘法得到密文矩阵mi n n len ⨯/= ming n n len ⨯/⨯n n A ⨯mod 26;6、 将密文矩阵的数字与字符对应起来,得到密文。
7、 解密时利用加密矩阵的逆矩阵1-A 和密文,可得到明文。
实例 随机产生一个5阶加密方阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=15227132102123916296101571823055117A得到方阵A 的逆矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=-9131341212252318151920391211824723102141871A加密过程:输入明文:Hill cipher is one of my favorite cipher分组:Hillc ipher isone ofmyf avori tecip her(aa)加密得到密文:SKSXAQERQQYDVDGBKNVSMWZATGIAPDOJBIO解密过程:输入密文:SKSXAQERQQYDVDGBKNVSMWZATGIAPDOJBIO解密得到密文:HILLCIPHERISONEOFMYFA VORITECIPHERAA代码部分:#include <iostream>#include <string>#include <math.h>#include <stdlib.h>using namespace std;int A[1000][1000];//转化矩阵int a[1000][1000];//[A E]int B[1000][1000];//A^(-1)int ming[1000][1000];//明文矩阵int mi[1000][1000];//密文矩阵int n;//矩阵的阶数void input()//输入数据{int i, j;//cout << "请输入矩阵的元素" << endl;for( i = 1; i <= n; i++ )for( j = 1; j <= n; j++ )//cin >> A[i][j];A[i][j] = rand() % 26;memcpy( a, A, sizeof( A ) );//将矩阵A 复制给afor( i = 1; i <= n; i++ )//将矩阵变成[a E]的形式,E 为单位矩阵{for( j = n + 1; j <= 2*n; j++ ){if( i + n == j )a[i][j] = 1;elsea[i][j] = 0;}}}void output(){int i,j;cout << "矩阵阶数:" << n <<endl;cout << "矩阵A的元素:" << endl;for( i = 1; i <= n; i++ ){for( j = 1; j <= n; j++ )cout << A[i][j] << " ";cout << endl;}cout << "A矩阵的逆矩阵B为" << endl;for( i = 1; i <= n; i++ )//输出A矩阵的逆矩阵B{for( j = 1; j <= n; j++ ){B[i][j] = a[i][j+n];cout << B[i][j] << " ";}cout << endl;}}int Extend_Gcd( int a, int b, int &x, int &y )//扩展欧几里得算法{if( b == 0 ){x = 1;y = 0;return a;}int r = Extend_Gcd( b, a % b, x, y ); //a'=b;b'=a%b; a'x + b'y <=> bx + (a-a/b*b)y <=> ay + b(x-a/b*y)int t = x;x = y;y = t - a / b * y;return r;}int ni( int a)//求逆a*x=1(mod n){int x, y;int d = Extend_Gcd( a, 26, x, y );if( d == 1 )return ( x % 26 + 26 ) % 26;elsereturn -1;}int gaosi()//高斯-约当消元求A矩阵的逆矩阵B{int i, j, k;for( k = 1; k <= n; k++ )//高斯-约当消元{int Ni = ni( a[k][k] );if( Ni == -1 ) return 0;//cout << Ni << endl;for( i = k + 1; i <= 2 * n; i++ )a[k][i] = ( a[k][i] * Ni % 26 + 26 ) % 26;for( i = 1; i <= n; i++ ){if( i == k ) continue;for( j = k + 1; j <= 2 * n; j++ )a[i][j] = ( ( a[i][j] - a[i][k] * a[k][j] % 26 ) % 26 + 26 ) % 26;}}return 1;}void jiami() //加密过程{int i, j, k;char mingstr[100];char mingc;cout << "请输入明文" << endl;cin >> mingstr;//getchar();//gets( mingstr );int len = strlen( mingstr );if( len % n ){for( i = len; i < len/n*n+n; i++)mingstr[i] = 'a';mingstr[i] = '\0';}puts( mingstr );int Len = strlen( mingstr );cout << "字符串长度:" << Len << endl;for( i = 1; i <= Len/n; i++ )//将明文分成len/n段{for( j = 1; j <= n; j++ )//求每一段的明文转换为矩阵{if( mingstr[(i-1)*n+j-1] >= 'a' && mingstr[(i-1)*n+j-1] <= 'z' )ming[i][j] = mingstr[(i-1)*n+j-1] - 'a';elseming[i][j] = mingstr[(i-1)*n+j-1] - 'A';//cout << ming[i][j] << " ";}//cout << endl;}for( k = 1; k <= Len/n; k++ )//求len/n段的密文矩阵{for( i = 1; i <= n; i++ )//利用矩阵的乘法{mi[k][i] = 0;for( j = 1; j <= n; j++ )mi[k][i] = ( mi[k][i] + ming[k][j] * A[j][i] % 26 + 26 ) % 26;//cout << mi[k][i] << endl;}}cout << "密文为" << endl;for( i = 1; i <= Len/n; i++ )//输出密文{for( j = 1; j <= n; j++ ){mingc = mi[i][j] + 'A';cout << mingc;}}cout << endl;}void jiemi()//解密过程{int i, j, k;char mistr[100];char mingc;cout << "请输入密文" << endl;cin >> mistr;//getchar();//gets( mistr );//puts( mistr );int len = strlen( mistr );for( i = 1; i <= len/n; i++ )//将密文分成len/n段{for( j = 1; j <= n; j++ )//求每一段的密文转换为矩阵{if( mistr[(i-1)*n+j-1] >= 'a' && mistr[(i-1)*n+j-1] <= 'z' )mi[i][j] = mistr[(i-1)*n+j-1] - 'a';elsemi[i][j] = mistr[(i-1)*n+j-1] - 'A';}}for( k = 1; k <= len/n; k++ )//求len/n段的明文矩阵{for( i = 1; i <= n; i++ )//利用矩阵的乘法{ming[k][i] = 0;for( j = 1; j <= n; j++ )ming[k][i] = ( ming[k][i] + mi[k][j] * B[j][i] % 26 + 26 ) % 26;// cout << mi[i] << endl;}}cout << "明文为" << endl;for( i = 1; i <= len/n; i++ )//输出明文{for( j = 1; j <= n; j++ ){mingc = ming[i][j] + 'A';cout << mingc;}}cout << endl;}int main(){bool flag = 1;cout << "欢迎使用Hill体制进行加解密!" << endl;while( flag ){cout << "请输入加密矩阵的阶数n:";cin >> n;do{input();//数据输入}while( !gaosi() );output();//gaosi();//用高斯-约当消元求矩阵A%26的逆Bjiami();//加密过程jiemi();//解密过程cout << "是否继续加密解密?1:继续,0:否" << endl;cin >> flag;}return 0;}/*abcdefghijklmnopqrstuvwxyz*/。
【实验十】Hill密码的加密、解密与破译一、实验目的本实验主要涉及代数,利用模运算下的矩阵乘法、求逆矩阵、线性无关、线性空间与线性变换等概念和运算,学习Hill密码体制的加密、解密和破译过程二、实验任务任务五找出元素属于Z26的所有可能的Hill2密码加密矩阵。
若截获了如下一段密文:UTCQCVFOYQUVMGMGULFOLEYHDUHOPEASWXTIFBAMWT且已知它是根据表10.1按Hill2密码体制加密的,你能否将其解密?分析:对于第一问,找出元素属于Z26的所有可能的Hill2密码加密矩阵,我们只需要用枚举法即可。
关键在于第二问的解密,根据我们编写的C++程序,共有约15万个可能的加密矩阵,也就对应着同等数量的可能明文。
所以问题的重点就在于如何从这么多数量的明文中筛选出有意义的信息。
1、找出元素属于Z26的所有可能的Hill2密码加密矩阵C++源代码(枚举加密矩阵部分):chain_mat* head=new chain_mat; //加密矩阵用链表储存head->next=NULL;chain_mat* now=head;int n=0;for(int a=0;a<26;a++)for(int b=0;b<26;b++)for(int c=0;c<26;c++)for(int d=0;d<26;d++){intdet=a*d-b*c;if(det%2!=0&&det%13!=0) //判断是否模26可逆{chain_mat* newm=new chain_mat;newm->dat[0][0]=a;newm->dat[0][1]=b;newm->dat[1][0]=c;newm->dat[1][1]=d;n++; //累加符合要求的矩阵数量now->next=newm;now=now->next;now->next=NULL;}}运行结果:n=157248由于矩阵数量过多,我们将其存储在matrixlist.txt文件中C++源代码(输出矩阵部分):voidoutput_mat(chain_mat* head){ofstreamoutfile;outfile.open("matrixlist.txt");chain_mat* now=head->next;while(now!=NULL){outfile<<now->dat[0][0]<<'\t'<<now->dat[0][1]<<'\n'<<now->dat [1][0]<<'\t'<<now->dat[1][1]<<"\n=========="<<endl;now=now->next;}outfile.close();}下面给出matrixlist.txt中部分内容(完整文件将发至邮箱):0 11 0==========0 11 1==========0 11 2==========0 11 3==========0 11 4==========0 11 5==========0 11 6==========0 11 7==========0 11 8==========0 11 9==========0 11 10==========2.解密题中密文首先需要做的是对矩阵进行模逆运算C++源代码(模26逆矩阵运算部分):voidinv(chain_mat* m1){intdet=m1->dat[0][0]*m1->dat[1][1]-m1->dat[0][1]*m1->dat[1][0];det=reci(det);inttmp;tmp=m1->dat[0][0]*det;m1->dat[0][0]=m1->dat[1][1]*det;m1->dat[1][ 1]=tmp;m1->dat[0][1]*=-1*det;m1->dat[1][0]*=-1*det;for(inti=0;i<2;i++)for(int j=0;j<2;j++){m1->dat[i][j]%=26;if(m1->dat[i][j]<0)m1->dat[i][j]+=26;}}然后用逆矩阵乘密文向量,得到可能明文序列,存入名为me1的string数组中C++源代码(模26逆矩阵运算部分):n=0;while(now!=NULL)inv(now);for(inti=0;i<sizeof(str)-1;i+=2){int s1=now->dat[0][0]*co1[i]+now->dat[0][1]*co1[i+1];int s2=now->dat[1][0]*co1[i]+now->dat[1][1]*co1[i+1];s1%=26;s2%=26;if(s1<0)s1+=26;if(s2<0)s2+=26;if(s1==0)s1=26;if(s2==0)s2=26;me1[n]+=('A'+s1-1);me1[n]+=('A'+s2-1);}n++;inv(now);now=now->next;}至此,我们得到了157248条可能的明文,接下来就要考虑筛选的问题。
Hill 密码的加密、解密与破译[实验十] Hill 密码的加密、解密与破译一、实验目的本实验主要涉及代数,利用模运算意义下的矩阵乘法、求逆矩阵、线性无关、线性空间与线性变换等概念和运算,学习Hill 密码体制的加密、解密和破译过程。
二、实验内容(1)甲方收到与之有秘密通信往来的乙方的一个密文信息,密文内容: W O W U Y S B A C P G Z S A V C O V K P E W C P A D K P P A B U J C Q L Y X Q E Z A A C P P按照甲方与乙方的约定,他们之间的密文通信采用Hill 2密码,密钥为二阶矩阵 且汉语拼音的26个字母与0~25之间的整数建立一一对应的关系,称之为字母的表值,具体的表值见表10. 1 明文字母的表值。
问这段密文的原文是什么?(2)甲方截获了一段密文: O J W P I S W A Z U X A U U I S E A B A U CR S I P L B H A A M M L P J J O T E N H 经分析这段密文是用Hill 2密码编译的,且这段密文的字母UCRS 依次代表字母TACO ,问能否破译这段密文的内容?三、Hill 2密码的数学模型 Ⅰ、加密与解密过程Hill 2密码是一种传统的密码体制,它的加密过程可用以下框图描述:⎪⎭⎫⎝⎛=3021A明文------加密器------密文------普通信道------解密器密码分析(敌方截获)----- 明文在这个过程中,运用的数学手段是矩阵运算,加密过程的具体步骤如下: 1.根据明文字母的表值将明文信息用数字表示,设明文信息只需要26个拼音字母A~Z (也可能不止26个,如还有数字、标点符号等),通信双方给出这26个字母表值(见表10.1明文字母的表值)。
2.选择一个二阶可逆整数方阵A ,称为Hill 2密码的加密矩阵,它是这个加密体制的“密钥”(是加密的关键,仅通讯双方掌握)。