matlab实验四 古典密码与破译

合集下载

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

实验六:matlab古典密码与破译
③ 将明文字母分组。 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 得:

古典密码

古典密码

实验1: 古典密码一、实验名称和性质二、实验目的掌握古典密码体制中的基本加密解密运算,如加法密码、仿射密码等,几种典型的古典密码体制,如Hill体制,以及关于这些古典密码体制的一些破译方法。

三、实验的软硬件环境要求硬件环境要求:单机,无需上Internet网。

使用的软件名称、版本号以及模块:使用Matlab,版本6.0或以上。

四、知识准备前期要求掌握的知识:Matlab编程实验相关理论或原理:古典密码的基本加密解密运算,几种典型古典密码的加密解密算法。

实验流程:五、实验要求和注意事项1.完成给出的程序中标有“-----------------------”部分的编程。

2.参照例子的做法,完成实验题目。

要求给出完整的过程,包括程序,实验结果。

六、实验步骤和内容1.基本的加密解密运算例1. 使用加法密码(或称为移位密码)获得密文kddkmu,尝试所有的可能性来解密它。

解:编写allshift程序,调用该程序allshift('kddkmu')运行结果为kddkmuleelnvmffmownggnpxohhoqypiiprzqjjqsarkkrtbsllsuctmmtvdunnuwevoovxfwppwygxqqxzhyrryaizsszbjattack 是列表上出现的唯一单词,所以它就是明文buubdlcvvcemdwwdfnexxegofyyfhpgzzgiqhaahjribbiksjccjltfunction y = allshift(x);% This function displays all of the shifts of the message xfor j=0:25,------------ ;disp(z);endfunction y = shift(x,b);% This function performs the shift encryption function% y = x + b mod 26% We assume that x is a text string and b is a number% The result is kept in text representationxnum=text2int(x);-----------------------;y=int2text(ynum);function y = text2int (x)% This function takes the letter in the string x and converts% it to an integer.% The convention for this function is% a --> 0% b --> 1% and so on...if ( (x < 'a') | (x > 'z') ),error('Text character out of range a-z');end;y=x - 'a'; %It helps to know Matlab tricksfunction y = int2text (x)% This function takes the number in the variable x and converts% it to a character y.% The convention for this function is% a <-- 0% b <-- 1% and so on...if ( (x < 0) | (x > 25) ),error('Integer out of range 0 - 26');end;y=char(x + 'a'); %It helps to know Matlab tricks例2. 运用仿射函数7x +8 加密明文信息cleopatra 。

古典密码的设计与破译

古典密码的设计与破译

8
讓Vigenère Cipher難以破解


所以當金鑰的長度與明文一樣長,甚至比明 文更長,將會增加其破譯的困難度,甚至無 法被敵人破譯。 而長度長的金鑰當然也能是約定好的某本書, 但是在發送接收訊息時也就必須要有金鑰本 在手邊,由於是有規則性地推移字母,即使 無密本也可逐字推算。
9
10
Enigma machine
16
3 movable rotors are sandwiched between 2 fixed wheels: the entry wheel on the right and the reflector (here marked "B") on the left.
17
連接板(Plug-board)


World War II 德國所使用 名稱源自希臘語,意指‚ 不可 思議的東西‛或‚謎‛ Enigma是突破性地結合機器來 進行加密,使得密碼更不易被 破解
11
基本元件與原理


其中最基本的三大部分為鍵盤、轉子和顯示器。 鍵盤共有26個鍵,分別為26個英文字母,其排 列接近我們現在所使用的計算機鍵盤。為了使 消息盡量簡短且更難破譯,空格和標點符號都 被省略。 鍵盤、轉子和顯示器由電線相連,轉子本身也 集成了26條線路,把鍵盤的信號對應到顯示器 不同的小燈上去,每一個字母都一一對應替換 為另一個字母 。
23
Enigma的破解(2)


雖然這些循環圈是由當日金鑰,也就是轉子 的位置,它們的初始方向以及連接版上字母 置換造成的,但是每組循環圈的個數和每個 循環圈的長度,卻僅僅是由轉子的位置和它 們的初始方向決定的,和連接版上字母交換 的情況無關﹗ 如果只考慮轉子的位置和它們的初始方向, 只有105456(6*263)種可能性。雖然這還 是一個很大的數字,但是把所有的可能性都 試驗一遍,已經是一件可以做到的事情了。

古典密码的实验报告

古典密码的实验报告

古典密码的实验报告古典密码的实验报告引言:密码学作为一门古老而又神秘的学科,一直以来都吸引着人们的兴趣。

在古代,人们用各种各样的密码来保护重要信息的安全性。

本实验旨在通过实际操作,探索古典密码的加密原理和破解方法,从而深入了解密码学的基本概念和应用。

一、凯撒密码凯撒密码,又称移位密码,是最简单的一种古典密码。

其原理是通过将明文中的每个字母按照一定的规则进行移位,得到密文。

在本实验中,我们选择了一个简单的凯撒密码进行破解。

首先,我们选择了一段明文:“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和解密函数,成功实现了单表代替密码的加密和解密过程。

322-古典密码与破译

322-古典密码与破译

322-古典密码与破译实验六古典密码与破译一、问题背景和实验目的保密通讯在军事、政治、经济斗争和竞争中的重要性是不言而喻的(在斗争或竞争中,一方要将信息传递给己方的接收者,同时又要防止其他人(特别明文) 经过加密,是敌方) 知道信息的内容(他采用的一种方式是:将原来的信息(称为变成密文之后发送出去,使敌方即使得到密文也读不懂,而合法的接收者收到密文之后却可以按照预先约定好的方法加以解密,再翻译成明文(而敌方却要千方百计从密文破译出明文来(一方如何编制密码使之不易被破译,另一方则要找到其弱点加以破译,这就构成了密码学的主要内容(从密码学的发展来看,密码可分为古典密码 (即以字符为基本加密单元的密码),以及现代密码(即以信息块为基本加密单元的密码)(这里我们将介绍古典密码的加密和破译原理(本实验主要涉及代数,利用模运算意义下的矩阵乘法、求逆矩阵、线性无关、线性空间与线性变换等概念和运算,学习古典密码体制的加密、解密和破译过程(二、相关函数(命令)及简介1(input('一些提示语句'):由键盘输入表达式(注:a=input(''),对不同的变量类型 a,输入时要注意相应的格式,若 a 为字符则要加' ',若a 为矩阵则要加[ ]等(2(length(a):给出数组 a 的长度(3(mod(m, n):求 m 被 n 整除后的余数(4(det(a):求矩阵 a 的行列式(5(inv(a):求矩阵 a 的逆矩阵(6(reshape(a, m, n):将矩阵 a 重排成 m*n 的矩阵(例如:a=1:10; b=reshape(a, 2, 5)b= 1 3 5 7 92 4 6 8 107(double('字符'):将'字符'内的字符转化成 ASCII 码(8(char(a):将 a 的每个数值转化为字符(例如:c=double('love')c = 108 111 118 101char(c)ans = love9([m, n]=size(a):求矩阵a的维数.10(gcd(m, n):求m, n的最大公约数(11(fprintf(fid, format, A, ...):以指定格式将数据写入文件,若无参数fid,则输出到屏幕(,,三、实验内容1.Hill 密码的两个实际问题: 2实际问题(甲):甲方收到与之有秘密通信往来的乙方的一个密文信息,密文内容:W K V A C P E A O C I X G W I Z U R O Q W A B A L O H D K C E A F C L W WC V L E M I M C C按照甲方与乙方的约定,他们之间的密文通信采用 Hill 密码,密钥为二阶矩阵212,,且汉语拼音的 26 个字母与 0,25 之间的整数建立一一对应的关系,称之为A,,,03,,字母的表值,具体的表值见表 1(问这段密文的原文是什么?表1明文字母的表值A B C D E F G H I J K L M1 2 3 4 5 6 7 8 9 10 11 12 13N O P Q R S T U V W X Y Z14 15 16 17 18 19 20 21 22 23 24 25 0实际问题(乙):甲方截获了一段密文:M O F A X J E A B A U C R S X J L U Y H Q A T C Z H W B C S C P 经分析这段密文是用 Hill 密码编译的,且这段密文的字母 U C R S 依次代表字母T A C 2O,问能否破译这段密文的内容?2. Hill 密码的数学模型 2一般的加密过程是这样的:明文加密器密文普通信道解密器明文 ,,,,,其中的“ 普通信道解密器”这个环节容易被敌方截获并加以分析( ,,在这个过程中,运用的数学手段是矩阵运算,加密过程的具体步骤如下:1) 根据明文字母的表值,将明文信息用数字表示,设明文信息只需要 26 个拼音大写字母 A—Z(也可以不止 26 个,如还有小写字母、数字、标点符号等),通信双方给出这 26 个字母表值(见表 1)(A2) 选择一个二阶可逆整数方阵,称为 Hill 密码的加密矩阵,它是这个加密体制2的“密钥”(是加密的关键,仅通信双方掌握)(问题(甲)已给出了这个二阶矩阵(3) 将明文字母依次逐对分组(Hill 密码的加密矩阵为二阶矩阵,则明文字母每 2 个2一组(可以推广至 Hilln 密码,则每 n 个明文字母为一组)(若最后一组仅有一个字母,则补充一个没有实际意义的哑字母,这样使每一组都由 2 个明文字母组成(查出每个明文字母的表值,构成一个二维列向量 ( ,,,,A,A4) 乘以,得一新的 2 维列向量,由的两个分量反查字母表值得到, 的两个字母即为密文字母(以上 4 步即为 Hill 密码的加密过程( 2解密过程,即为上述过程的逆过程(12,,例:明文为HDSDSXX (“华东师大数学系”的拼音缩写),,求这段明文A,,,03,,的Hill密文( 2解:将明文相邻文母每 2 个分为一组:,,HD SD SX XX (1) 最后一个字母 X 为哑字母,无实际意义(查表1得到每对字母的表值,并构造 2 维列向量:8191924,,,,,,,, (2) ,,,,,,,,, , , ,,,,,,,,442424,,,,,,,,将上述 4 个向量左乘矩阵A,得到 4 个 2 维列向量:16276772,,,,,,,, (3) ,,,,,,,,, , , ,,,,,,,,12127272,,,,,,,,作模 26 运算(每个元素都加减 26 的整数倍,使其化为 0,25 之间的一个整数)得到:1616271,,,,,,,, (mod26),(mod26),,,,,,,,,,,12121212,,,,,,,,67157220,,,,,,,, (mod26),(mod26),,,,,,,,,,72207220,,,,,,,,反查表 1 得到每对表值对应的字母为:PL AL OT TT (4)(“华东师大数学系”的拼音缩写) 的密文( 这就得到了“HDSDSXX”要将这段密文解密,只要将上述加密过程逆转回去,即将密文按同样方式分组,查它们的表值即得:1611520,,,,,,,, (5) ,,,,,,,,, , , ,,,,,,,,12122020,,,,,,,,(5) 是前面的 (3) 经模26运算的结果(但如何由 (5) 中的向量求得(2) 中的向量呢? 这是在模运算意义下,如何解方程组:A,,, (6)det()0A,的问题(一个一般的 n 阶方阵可逆的充要条件为 (但在模 26 意义下矩阵可Zm,,0,1,2,,1逆与一般的矩阵可逆有所不同(记整数集合,m 为一正整数,模m ,,m可逆定义如下:A定义1:对于一个元素属于集合的 n 阶方阵,若存在一个元素属于集合的ZZmmB方阵,使得ABBAEm,,(mod),,1ABA称为模 m 可逆,为的模 m 逆矩阵,记为( BAm,(mod)Em(mod)的意义是,每一个元素减去 m 的整数倍后,可以化成单位矩阵(例如: ,,2752,, (mod26),E,,2653,,abm,1(mod)定义2:对的一个整数,若存在的一个整数,使得,称为bbZZaamm ,1的模倒数或乘法逆,记作( bam,(mod)m可以证明,如果与无公共素数因子,则有唯一的模倒数(素数是指除了 1 与amam,1自身外,不能被其他非零整数整除的正整数),反之亦然(例如,. 利用这39(mod26),点,可以证明下述命题:det()A命题:元素属于的方阵A模可逆的充要条件是,和没有公共素数因子,Zmmmdet()A即和互素( m显然,所选加密矩阵必须符合该命题的条件(问题(甲)所选择的明文字母共 26 个,,26 的素数因子为 2 和 13,所以上的m,26Z26ac,,det()(mod)AmAA方阵可逆的充要条件为不能被 2 和 13 整除(设,若满A,,,bd,,足命题的条件,不难验证:db,,,,,11 Aadbc()(mod26),,,,ca,,,,1()(mod26)adbc,()(mod26)adbc,其中是的倒数(显然,是中的数( Z()adbc,26中有模 26 倒数的整数及其倒数可见表 2( Z26表2 模 26 倒数表a1 3 5 7 9 11 15 17 19 21 23 25-1 1 9 21 15 3 19 7 23 11 5 17 25 a表2 可用下列程序求得:m=26;for a=1:mfor i=1:mif mod(a*i, m)==1fprintf('The INVERSE (mod %d) of number: %d is: %d\n', m, a, i) end; end; end注意:附录1给出的 Matlab 程序,可以用于判断一个2 阶方阵在模 26 意义下是否可逆,并在可逆的前提下求出其逆矩阵(读者可结合下列演算的实例加以验证(,1利用表 1 可以演算出的如下: A(mod26),,32,,,,,11 A(mod26)3(mod26),,,01,,32,,, ,9(mod26),,01,,2718,,, ,(mod26),,09,,18,, ,,(mod26)B,,09,,于是,可以简单地计算得到:16112197,,,,,,,, BB*,*,,,,,,,,,,,1210812108,,,,,,,,1517520180,,,,,,,, BB*,*,,,,,,,,,,2018020180,,,,,,,,再进行模 26 运算后得到:8191924,,,,,,,, ,,,,,,,,,,,442424,,,,,,,,即得到明文:HD SD SX X(X)(用 Matlab 编程进行加密算法的程序参见附录 2(而用 Matlab 编写的相应的解密算法程序参见附录 3(表 3 问题 (甲) 的解序号分组密文密文表值明文表值分组明文1 W 23 7 GK 11 21 U2 V 22 4 DA 1 9 I3 C 3 1 AP 16 14 N4 E5 13 MA 1 9 I5 O 15 13 MC 3 1 A6 I 9 19 SX 24 8 H7 G 7 9 IW 23 25 Y8 I 9 9 IZ 0 0 Z,,9 U 21 9 IR 18 6 F10 O 15 21 U Q 17 23 W11 W 23 5 EA 1 9 I12 B 2 10 JA 1 9 I13 L 12 2 B O 15 5 E14 H 8 14 ND 4 10 J15 K 11 9 IC 3 1 A16 E 5 13 MA 1 9 I17 F 6 4 DC 3 1 A18 L 12 14 N W 23 25 Y19 W 23 21 UC 3 1 A20 V 22 14 N L 12 4 D21 E 5 5 E M 13 13 M22 I 9 9 IM 13 13 M23 C 3 1 AC 3 1 A于是,实际问题(甲)的解为:GU DIAN MI MA SHI YI ZI FU WEI JI BEN JIA MI DAN YUAN DE MI MA即为:“古典密码是以字符为基本加密单元的密码”( 以下来解实际问题(乙)(实际问题 (乙) 属于破译问题(前面的加密与解密过程类似于在二维向量空间进行线性变换与其逆变换,每个明文向量是一个上的二维向量,乘以加密矩阵后,仍为上ZZmmA的一个二维向量(由于加密矩阵为可逆矩阵,所以,如果知道了两个线性无关的二维,1AA明文向量与其对应的密文向量,就可以求出它的加密矩阵及( 问题 (乙) 的密文中只出现一些字母,当然它可以是汉语拼音,或英文字母或其他语m,26言的字母(所以可猜测秘密信息是由 26 个字母组成,设(通常由破译部门通过大量的统计分析与语言分析确定表值(假如,所确定的表值为表 1,已知,,,UTRC,,,,,,,, ,,,,,,,,,,,,CASO,,,,,,,,注:前的为密文,后的为明文( "","",按照表1,UT2120,,,,,,,, ,,,,,,,,,A111,,,,,,,,CA31,,,,,,,,RC183,,,,,,,, ,,,,,,,,,A222,,,,,,,,SO1915,,,,,,,,2118在模 26 意义下,,它有模 26 倒数,所,,,,,det(,)(mod26)345(mod26)712319以,在模 26 意义下线性无关,类似地,也可以验证,,,,det(,)11(mod26),,,,,,121212线性无关(TTTTT,1,1TPXC,记,则,记,其中( PC,,(,),(,),,,,PACPAC,,,()XA,()1212 TTTPE以下在模 26 意义下对进行一系列初等行变换将变成单位矩阵,则相(|)PCT,1TCX应的将变成,即( ()A10117,,,,,,11T经过以上的一系列推导,可得 AA,,(),,,,,17909,,,,相应的 Matlab 程序参见附录 4.利用与实际问题(甲)同样的解密方法,可以求得,这段密文的明文是:| HE | WI LL | VI SI T| A | CO LL EG E | T HI S | A FT ER NO ON | 分析这段文字,如果依竖线所划分成的词汇,则这段密文可理解为如下一段文字:''He will visit a college this afternoon''(这样,可以认为破译成功(四、自己动手1. 实际问题 (甲) 的修正:按照甲方与乙方的约定,他们之间的密文通信采用Hill212,,密码,密钥为二阶矩阵且汉语拼音的 26 个字母以及空格(字母 A~Z 的表值A,,,04,,为 1~26,空格的表值为 0)与 0,26 之间的整数建立一一对应的关系,称之为字母的表值,试修正表 1、表 2 以及附录中的程序,以给出模 27 意义下矩阵可逆的判别方法和具体求法(2. 若将你姓名的拼音作为明文,例如:赵本山 (ZHAO BEN SHAN,含空格),密钥等参见练习 1,求其在模 27 意义下的Hill密文( 23. 若将你姓名的拼音作为Hill密文,例如:赵本山 (ZHAO BEN SHAN,含空格),2,,,密钥等参见练习 1,求其在模 27 意义下的明文(4. 利用所介绍的Hill密码体制的原理,根据给定的 26 个英文字母的乱序表值(见2表4),设计与建立 Hill密码体制的加密、解密与破译框图并建立必要的计算机程序(设4英文 26 个字母以下面的乱序表与中的整数对应: Z26表4A B C D E F G H I J K L M5 23 2 20 10 15 8 4 18 25 0 16 13N O P Q R S T U V W X Y Z7 3 1 19 6 12 24 21 17 14 22 11 9869569510(1) 设,验证矩阵A能否作为 Hill密码体制的加密矩阵(用框图A,45849106114画出你的验算过程,并编写相应的计算机程序((2) 设明文为HILL CRYPTOGRAPHIC SYSTEM IS TRADJITIONAL(利用上面的表值与加密矩阵给此明文加密,并将得到的密文解密(画出加密与解密过程的框图并编写相应的计算机程序(5. 设已知一份密文为 Hill 密码体系,其中出现频数最高的双字母是 RH和NI,2而在明文语言中,出现频数最高的双字母为 TH 和 HE(由这些信息按表 5 给出的表值能得到什么样的加密矩阵?A B C D E F G H I J K L M0 1 2 3 4 5 6 7 8 9 10 11 12N O P Q R S T U V W X Y Z13 14 15 16 17 18 19 20 21 22 23 24 256. 找出元素属于的所有可能的 Hill 密码加密矩阵(若截获了如下一段密文Z226UTCQCVFOYQUVMGMGULFOLEYHDUHOPEASWXTIFBAMWT且已知它是根据表 1 按 Hill 密码体制加密的,你能否将其解密? 2五、附录附录 1:判断一个 2 阶方阵是否模 26 意义下可逆;若可逆,求出模 26 意义下的逆矩阵(m=26;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;endendastar=[aa(2,2) -aa(1,2);-aa(2,1) aa(1,1)];invaa=mod(antaa*astar,m);: ', mat2str(invaa)]) disp(['原矩阵是:', mat2str(aa), ',它的逆矩阵(mod', num2str(m), ') 是end注:(1) 实际应用中,当二阶密钥矩阵(可逆)为已知时,就不要每次再输入矩阵了(例12,,如:模 26 意义下的二阶密钥矩阵为,则可直接输入:enmat=[1, 2;0, 3]; 以取A,,,03,,代第 3,7 行(18,,(2) 附录 2 中的 demat=[1, 8;0, 9] 即实为本程序的结果,读者也可将demat=,,09,,附录 1 归并到附录 2、附录 3 中,以使附录 2、附录 3 保持独立( (3) 注意附录 2、附录 3 中当字符串的长度不是偶数时的处理方法( (4) 特别注意当m,27时,应如何适当地修改附录 2、附录 3,才能完成对空格的正确处理(12,,附录2:模 26 意义下,密钥(加密)为矩阵时,对任意输入的大写字母A,,,03,,串的加密程序(m=26;enmat=[1 2;0 3];demat=[1 8;0 9];ZERO=64;c=[];e1=[];astr=input('输入要加密的明文文字(全部为大写字母):') whileany(double(astr)>90 | double(astr)<65)astr=input('输入错误,应该全部为大写字母:')enda1=double(astr);lh=length(a1); if mod(length(a1), 2)==1a1=[a1, a1(length(a1))]; enda1=a1-ZERO;for i=1:length(a1)if a1(i)==26a1(i)=0;endendc=reshape(a1, 2, length(a1)/2); d1=mod(enmat*c, m);e1=reshape(d1, length(a1), 1);,,,e1=e1';e1=e1+ZERO;for i=1:length(e1)if e1(i)==64e1(i)=90;endende1=e1(1:lh);char(e1)18,,附录 3:模 26 意义下,密钥(解密)为矩阵时,对任意输入的大写字A,,,09,,母串的解密程序(m=26;enmat=[1 2;0 3];demat=[1 8;0 9];ZERO=64;c=[];e1=[];astr=input('输入要解密的密文文字(全部为大写字母):') whileany(double(astr)>90 | double(astr)<65)astr=input('输入错误,应该全部为大写字母:') enda1=double(astr);lh=length(a1); if mod(length(a1), 2)==1a1=[a1, a1(length(a1))]; enda1=a1-ZERO;for i=1:length(a1)if a1(i)==26a1(i)=0;endendc=reshape(a1, 2, length(a1)/2);d1=mod(demat*c, m);e1=reshape(d1, length(a1), 1); e1=e1';e1=e1+ZERO;for i=1:length(e1)if e1(i)==64e1(i)=90;endende1=e1(1:lh);char(e1)TTTPE附录 4:在模 26 意义下对进行一系列初等行变换将变成单位矩阵过(|)PC程的 Matlab 程序.m=26;zero=64;p=input('输入要解密的密文文字(全部为大写字母):'),,,while any(double(astr)>90 | double(astr)<65)p=input('输入要解密的密文文字(全部为大写字母):')endp=double(p)-zero;p=reshape(p, 2, 2); c=input('输入相应的明文文字(全部为大写字母):')while any(double(astr)>90 | double(astr)<65)input('输入相应的明文文字(全部为大写字母):')endc=double(c)-zero;c=reshape(c, 2, 2); pc=[p', c'];if pc(1, 1)==0;emp=pc(1, :);pc(1, :)=pc(2, :);pc(2, :)=temp; endfor i=1:(m-1)if mod(pc(1, 1)*i, m)==1ant=i;endendpc(1, :)=mod(pc(1, :).*ant, m);pc(2, :)=mod(pc(2, :)-pc(1, :).*pc(2, 1), m); for i=1:(m-1)if mod(pc(2, 2)*i, m)==1ant=i;endendpc(2, :)=mod(pc(2, :).*ant, m);pc(1, :)=mod(pc(1, :)-pc(2, :).*pc(1, 2), m); a=[pc(:, 3), pc(:, 4)]; a=a',,,。

使用MATLAB进行数据加密和解密

使用MATLAB进行数据加密和解密

使用MATLAB进行数据加密和解密数据加密和解密是当今信息安全领域中非常重要的问题。

加密算法的设计和实现是确保数据在传输和存储过程中不被未经授权的人访问的一种关键手段。

在本文中,我们将探讨如何使用MATLAB进行数据加密和解密,并介绍一些常用的加密算法和技术。

一、数据加密的基本原理数据加密是通过将原始数据转化为不易被理解的形式,从而防止未经授权的人获取敏感信息。

加密过程主要包括两部分:加密算法和密钥。

加密算法是对原始数据进行数学计算和转换的一种方法。

常见的加密算法有对称加密算法和非对称加密算法。

对称加密算法使用相同的密钥进行加密和解密,加密和解密过程非常高效。

其中,最常用的对称加密算法是AES(Advanced Encryption Standard)算法。

AES算法在MATLAB中有相应的函数可供使用。

非对称加密算法使用两个密钥:公钥和私钥。

公钥用于加密数据,私钥用于解密数据。

公钥可以公开,而私钥需要保密。

RSA算法是一种常见的非对称加密算法,也可以在MATLAB中使用相应的函数实现。

密钥是在加密和解密过程中起到关键作用的参数。

密钥的选择和管理直接影响到加密算法的安全性。

为了确保数据的安全性,密钥应该是足够长的随机数。

同时,密钥的保管也是一个重要的问题,只有授权的人能够访问密钥。

二、使用MATLAB进行数据加密在MATLAB中,我们可以利用现有的加密算法和函数来对数据进行加密。

接下来,我们将使用AES算法来进行示范。

首先,需要准备一个密钥。

在MATLAB中,我们可以通过randi函数生成一个随机的密钥。

例如:```MATLABkey = randi([0 255], 1, 16);```生成了一个16字节长的随机密钥。

然后,我们可以使用AES算法对数据进行加密。

在MATLAB中,通过函数aesencrypt可以实现AES加密。

例如,假设我们要加密一个文本文件:```MATLABplaintext = fileread('plaintext.txt');ciphertext = aesencrypt(plaintext, key);```上述代码将plaintext.txt文件中的内容进行AES加密,并将加密后的结果存储在变量ciphertext中。

作业答案1~古典密码

作业答案1~古典密码

(声明:非标准答案,仅供参考)一、古典密码(1,2,4)字母A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 数字0123456789101112131415161718192021222324251.设仿射变换的加密是E 11,23(m)≡11m+23(mod 26),对明文“THE NATIONAL SECURITY AGENCY ”加密,并使用解密变换D 11,23(c)≡11-1(c-23)(mod 26)验证你的加密结果。

解:明文用数字表示:M=[19741301981413011184220178192406413224]密文C =E 11,23(M)≡11*M+23(mod 26)=[24221510232472110231413151992724123111510191]=YWPKXYHVKXONPTJCHYBXLPKTB∵11*19≡1mod 26(说明:求模逆可采用第4章的“4.1.6欧几里得算法”,或者直接穷举1~25)∴解密变换为D(c)≡19*(c-23)≡19c+5(mod 26)对密文C 进行解密:M ’=D(C)≡19C+5(mod 26)=[19741301981413011184220178192406413224]=THE NATIONAL SECURITY AGENCY2.设由仿射变换对一个明文加密得到的密文为edsgickxhuklzveqzvkxwkzukvcuh ,又已知明文的前两个字符是“if ”。

对该密文解密。

解:设解密变换为m=D(c)≡a*c+b (mod 26)由题目可知密文ed 解密后为if ,即有:D(e)=i :8≡4a+b (mod 26)D(d)=f :5≡3a+b (mod 26)由上述两式,可求得a=3,b=22。

因此,解密变换为m=D(c)≡3c+22(mod 26)密文用数字表示为:c=[4318682102372010112521416252110232210252010212207]则明文为m =3*c+22(mod 26)=[85241420201317403197818197013100194072417]=ifyoucanreadthisthankateahcer4.设多表代换密码C i ≡AM i +B (mod 26)中,A 是2×2矩阵,B 是0矩阵,又知明文“dont ”被加密为“elni ”,求矩阵A 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四古典密码与破译姓名:****学号:********实验日期:2010年5月21日实验目的:1、了解古典密码的主要内容,理解古典密码的加密与解密原理、破译思想;2、学会用Matlab 软件来实现古典密码体制的加密和破译过程;能用Matlab 编写Hill2意义下的古典密码加密、解密和破译程序;3、掌握Matlab 中如何求模运算意义下的矩阵乘法、求逆矩阵、线性无关、线性空间与线性变换等概论和运算;实验项目:1、按照甲方与乙方的约定,他们之间的密文通信采用Hill2密码,密钥为二阶矩阵1204A ⎛⎫=⎪⎝⎭且汉语拼音的26个字母以及空格与0~26之间的整数建立一一对应的关系,试修正表1、表2以及附录中的程序,以给出模27意义下矩阵可逆的判别方法和具体求法。

2.若将自己的姓名的拼音作为明文,密钥等参见练习1,求其在模27意义下的Hill2密文。

3.若将自己的姓名的拼音作为Hill2密文,密钥等参见练习1,求其在模27意义下的明文。

4.利用所介绍的Hill2密码体制的原理,根据给定的26个英文字母的乱序表值(见表4),设计与建立Hill4密码体制的加密、解密与破译框图并建立必要的计算机程序.设英文26个字母以下面的乱序表与26Z 中的整数对应:(1)设⎪⎪⎪⎪⎪⎭⎫⎝⎛=10.11.6.109.4.8.510.5.9.65.9.6.8A ,验证矩阵A 能否作为Hill 4密码体制的加密矩阵.用框图画出你的验算过程,并编写相应的计算机程序。

(*)(2)设明文为HILL CRYPTOGRAPHIC SYSTEM IS TRADJITIONAL.利用上面的表值与加密矩阵给此明文加密,并将得到的密文解密.画出加密与解密过程的框图并编写相应的计算机程序。

5.设已知一份密文为Hill2密码体系,其中出现频数最高的双字母是RH和NI,而在明文语言中,出现频数最高的双字母为TH和HE.由这些信息按表5给出的表值能得到什么样的加密矩阵?实验背景:保密通讯在军事、政治、经济斗争和竞争中的重要性是不言而喻的.在斗争或竞争中,一方要将信息传递给己方的接收者,同时又要防止其他人(特别是敌方)知道信息的内容.他采用的一种方式是:将原来的信息(称为明文)经过加密,变成密文之后发送出去,使敌方即使得到密文也读不懂,而合法的接收者收到密文之后却可以按照预先约定好的方法加以解密,再翻译成明文.而敌方却要千方百计从密文破译出明文来.一方如何编制密码使之不易被破译,另一方则要找到其弱点加以破译,这就构成了密码学的主要内容.实验具体过程1.题目:实际问题(甲)的修正:按照甲方与乙方的约定,他们之间的密文通信采用Hill2密码,密钥为二阶矩阵1204A⎛⎫= ⎪⎝⎭且汉语拼音的26个字母以及空格(字母A~Z的表值为1~26,空格的表值为0)与0~26之间的整数建立一一对应的关系,称之为字母的表值,试修正表1、表2以及附录中的程序,以给出模27意义下矩阵可逆的判别方法和具体求法。

理论指导或编辑说明:1.input('一些提示语句'):由键盘输入表达式。

2、[m,n]=size(a):求矩阵a的维数;mod(m,n):求m被n整除后的余数。

3、gcd(m,n):求m,n的最大公约数;inv(a):求矩阵a的逆矩阵。

4、fprintf(fid,format,A,...):以指定格式将数据写入文件,若无参数fid,则输出到屏幕.程序:1、求表2模27倒数表的程序m=27;for a=1:mfor i=1:mif mod(a*i,m)==1fprintf('The INVERSE(mod%d)of number:%d is:%d\n',m,a,i);break;end;end;end2、模27意义下矩阵可逆的判别方法和具体求法的程序m=27;aa=input('输入一个2×2的矩阵,格式:[a11a12;a21a22]:')while size(aa)~=[22]aa=input('输入一个2×2的矩阵,格式:[a11a12;a21a22]:')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程序的输出结果:1、求表2模27倒数表的程序输出结果The INVERSE(mod27)of number:1is:1The INVERSE(mod27)of number:2is:14The INVERSE(mod27)of number:4is:7The INVERSE(mod27)of number:5is:11The INVERSE(mod27)of number:7is:4The INVERSE(mod27)of number:8is:17The INVERSE(mod27)of number:10is:19The INVERSE(mod27)of number:11is:5The INVERSE(mod27)of number:13is:25The INVERSE(mod27)of number:14is:2The INVERSE(mod27)of number:16is:22The INVERSE(mod27)of number:17is:8The INVERSE(mod27)of number:19is:10The INVERSE(mod27)of number:20is:23The INVERSE(mod27)of number:22is:16The INVERSE(mod27)of number:23is:20The INVERSE(mod27)of number:25is:13The INVERSE(mod27)of number:26is:262、模27意义下矩阵可逆的判别方法和具体求法的程序(运行时输入:[12;04]aa=1204原矩阵是:[12;04],它的逆矩阵(mod27)是:[113;07]对实验题目的解答:1、修正后的表1和表2分别为:表1:明文字母的表值A B C D E F G H I J K L M N 1234567891011121314O P Q R S T U V W X Y Z空格1516171819202122232425260表2:模26倒数表a124578101113141617192022232526 1-a1147114171952522281023162013262、题目:若将自己的姓名的拼音作为明文,例如:赵本山(ZHAO BENSHAN,含空格),密钥等参见练习1,即1204A⎛⎫= ⎪⎝⎭,求其在模27意义下的Hill2密文。

理论指导或编辑说明:1、length(a):给出数组a的长度。

2、double('字符'):将'字符'内的字符转化成ASCII码。

3、reshape(a,m,n):将矩阵a重排成m*n的矩阵。

程序:在模27意义下的加密程序m=27;enmat=[12;04];demat=[113;07];ZERO=64;c=[];en=[];astr=input('输入要加密的明文文字(全部为大写字母或空格):') while any(double(astr)>90|double(astr)<65&double(astr)~=32) astr=input('输入错误,应该全部为大写字母或空格:') endan=double(astr);lh=length(an);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:lh);char(en)程序的输出结果:输入要加密的明文文字(全部为大写字母或空格):'QIU YONG GANG'astr=QIU YONG GANGans=HIU AFAANABBU对实验题目的解答:在程序运行时只要输入’QIU YONG GANG’,按Enter,即可求出对应模27意义下的Hill2密文为:HIU AFAANABBU。

(注:根据题目的要求,在输入’QIU YONG GANG’时,N后面有加一个空格,再加单回引号。

)3、题目:若将自己的姓名的拼音作为Hill2密文,例如:赵本山(ZHAO BEN SHAN,含空格),密钥等参见练习1即1204A⎛⎫= ⎪⎝⎭,求其在模27意义下的明文.编辑说明:1、Hill2密码的解密过程,即为上一题中加密过程的逆过程。

2、将自己的名字的拼音作为Hill2密文进行解密,在输入要解密的密文文字(全部为大写字母或空格)时,若密文文字总个数为奇数,则需在最后一个密文字母后面加一个“哑字母”或“空格”(在下面的程序中是加与最后一个密文字母相同的字母)。

程序:模27意义下的解密程序m=27;enmat=[12;04];demat=[113;07];ZERO=64;c=[];en=[];astr=input('输入要解密的密文文字(全部为大写字母或空格):')while any(double(astr)>90|double(astr)<65&double(astr)~=32)astr=input('输入错误,应该全部为大写字母或空格:')endan=double(astr);lh=length(an);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:lh);char(en)程序的输出结果:输入要解密的密文文字(全部为大写字母或空格):'QIU YONG GANG'astr =QIU YONG GANGans =ZIU DXXVJVUQQ 对实验题目的解答:在程序运行时只要输入’QIU YONG GANG ’,按Enter ,即可求出对应的模27意义下的Hill2明文为:ZIU DXXVJVUQQ 。

相关文档
最新文档