古典密码矩阵排列法
- 格式:docx
- 大小:37.08 KB
- 文档页数:4
古典密码-普莱菲尔密码Playfair本⽂⽬的在于整合了⽹上的Playfair Cipher原理、解密及算法实现⼤部分均为转载,可以链接到原⽂地址查看,这⾥只是整合⽂章简介以下直接搬运原⽂,便于查看,也可以直接链接到原⽂地址查看ctf-wiki-PlayfairPlayfair 密码(Playfair cipher or Playfair square)是⼀种替换密码,1854 年由英国⼈查尔斯 · 惠斯通(Charles Wheatstone)发明,基本算法如下:选取⼀串英⽂字母,除去重复出现的字母,将剩下的字母逐个逐个加⼊ 5 × 5 的矩阵内,剩下的空间由未加⼊的英⽂字母依 a-z 的顺序加⼊。
注意,将 q 去除,或将 i 和 j 视作同⼀字。
将要加密的明⽂分成两个⼀组。
若组内的字母相同,将 X(或 Q)加到该组的第⼀个字母后,重新分组。
若剩下⼀个字,也加⼊ X 。
在每组中,找出两个字母在矩阵中的地⽅。
若两个字母不同⾏也不同列,在矩阵中找出另外两个字母(第⼀个字母对应⾏优先),使这四个字母成为⼀个长⽅形的四个⾓。
若两个字母同⾏,取这两个字母右⽅的字母(若字母在最右⽅则取最左⽅的字母)。
若两个字母同列,取这两个字母下⽅的字母(若字母在最下⽅则取最上⽅的字母)。
新找到的两个字母就是原本的两个字母加密的结果。
以 playfair example 为密匙,得P L A Y FI R E X MB C D G HK N O Q ST U V W Z要加密的讯息为 Hide the gold in the tree stumpHI DE TH EG OL DI NT HE TR EX ES TU MP就会得到BM OD ZB XD NA BE KU DM UI XM MO UV IF-Playfair该⽹站详细地介绍了Playfair密码,包括历史、运⽤、⽹页实现、python实现等等唯⼀的缺点就是全英Cryptanalysis of the Playfair cipher⽂章介绍了Playfair密码的破译,不过⼜是英⽂Decrypto在线⽹页CAPtfEncoder。
古典密码
1949年⾹农发表《保密系统的通信原理》,将古典密码推向现代密码。
古典密码主要是代换密码(substitution)和置换(permutation)密码。
⼀、置换密码
仅改变明⽂中元素的位置,但元素本⾝的值并不会改变。
1、列置换
将明⽂按⼆维数组排列,根据密钥进⾏列置换。
2、周期置换
将明⽂按密钥长度为周期进⾏分组,对每组中元素逐⼀置换。
⼆、代换密码
改变元素的值,根据映射关系分为单表和多表。
1、单表代换密码(明⽂密⽂双射)
a.基于密钥的单表代换密码
两字母表⼀⼀对应。
e.g. 取⼀单词为密钥,取其⽆重复序列,对应字母表中前⼏位,其余字母依次填写剩余字母表。
b.仿射密码
线性变换,y = a * x + b (mod 26), gcd(a,26) = 1。
当a=1,b=3时,即为凯撒密码。
2、多表代换密码(明⽂中不同位置的相同字符会代换成不同字符)
a. Playfair密码
先构造⼀个5*5的字母矩阵,将明⽂两两⼀组进⾏代换,根据组合不同从矩阵得到的代换也各不相同。
b. Vigenere密码
密钥为⼀串字符,将明⽂按密钥长度分组,对每组与密钥进⾏数字求和取模运算,因此尽管明⽂中字符相同,但其字符若对应密钥中不同位置,得到的密⽂也不同。
c. Hill密码
同样进⾏数字取模运算,将明⽂分组,与n*n矩阵运算。
单表代换后,明⽂与密⽂各个字符的出现频率相同,⽽多表则不同。
现代密码学第六讲古典密码算法第六讲古典密码算法置换密码单表代替密码算法多表代替密码算法置换(Permutation)密码•对明文字符或字符组进行位置移动的密码•明文的字母保持相同,但顺序被打乱了。
置换密码•对明文字符或字符组进行位置移动的密码•明文的字母顺序被打乱了,但明文字母本身不变天书(Scytale)•500 B.C.,斯巴达人在军事上用于加解密•发送者把一条羊皮纸螺旋形地缠在一个圆柱形木棒上,核心思想是置换木棒的直径需要保密第六讲古典密码算法置换密码单表代替密码算法多表代替密码算法代替密码•代替(Substitution)密码构造一个或多个密文字母表,然后用密文字母表中的字母或者字母组来代替明文字母或字母组,各字母或字母组的相对位置不变,但其本身的值改变了。
•代替密码分为单表代替密码和多表代替密码字母与数字的转换代替密码算法针对英文字母进行处理。
首先将26个字母与十进制数字中的0~25一一对应,如下表所示。
而这里的数的加法和乘法都定义为模26的加法和乘法。
字母a b c d e f g h i j k l m数字0123456789101112字母n o p q r s t u v w x y z数字13141516171819202122232425单表代替密码单表代替密码可分为•加法密码•乘法密码•仿射密码单表代替密码——加法密码明文:密文:密钥:解密:Caesar密码就是一种加法密码(k=3)明文字母ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母DEFGHIJKLMNOPQRSTUVWXYZ ABC•设明文为:LOVE•则密文为:ORYH明文:密文:密钥:解密:条件:关键在于计算:方法:扩展的欧几里得算法若,则存在整数使得这里就是,注意要将变为正数1k•加密函数:•密钥:•解密函数:•条件:仿射密码是乘法密码和加法密码的结合。
(mod 26)y ax b =+1()(mod 26)x a y b -=-(,26)1a =第六讲古典密码算法置换密码单表代替密码算法多表代替密码算法多表代换密码多表代换密码首先将明文分为由个字母构成的分组,对每个分组的加密为:其中是密钥,是的可逆矩阵,满足(是行列式),,,。
一.实验原理古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。
它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。
下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。
1.替代密码替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文。
例如:明文字母a、b、c、d ,用D、E、F、G做对应替换后形成密文。
替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。
下面我们介绍一种典型的单表替代密码,恺撒(caesar)密码,又叫循环移位密码。
它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代。
它的加密过程可以表示为下面的函数:E(m)=(m+k) mod n其中:m 为明文字母在字母表中的位置数;n 为字母表中的字母个数;k 为密钥;E(m)为密文字母在字母表中对应的位置数。
例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来的密文为L:E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L2.置换密码置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。
置换密码有时又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。
它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。
例如,明文为attack begins at five,密钥为cipher,将明文按照每行 6列的形式排在矩阵中,形成如下形式:a t t a c kb e g i n sa t f i v e根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换:1 2 3 4 5 6f =1 4 5 32 6根据上面的置换,将原有矩阵中的字母按照第1 列,第 4 列,第 5 列,第 3 列,第2列,第 6 列的顺序排列,则有下面形式:a a c t t kb i n g e sa I v f t e从而得到密文:abatgftetcnvaiikse其解密的过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。
古典密码矩阵排列法
古典密码矩阵排列法
随着信息传输技术的发展,密码学也成为了重要的研究领域之一。
密码学可以分为对称加密和非对称加密两种方式,其中古典密码则是对称加密中最古老的一种方式。
古典密码矩阵排列法正是古典密码中的一种,通过将明文按照一定规律排列成矩阵,再按照不同的加密策略进行加密,从而保护信息传输的安全。
下面是古典密码矩阵排列法的具体介绍:
第一步:选择矩阵大小
矩阵的大小取决于明文的长度和加密的需要。
一般情况下,明文长度为n,矩阵的大小应该是k * k,其中k*k >=n。
例如,对于明文 "Hello World",长度为11,可以选择3*4或者4*4的矩阵。
第二步:将明文填充到矩阵中
将明文按照一定顺序(从左到右,从上到下)填充到矩阵中,如果矩
阵大小不够,则需要在矩阵的末尾填充一些无意义的符号。
例如,对于明文 "Hello World",可以将其填充到3*4的矩阵中,得到如下结果:
H e l l
o W o
r l d X
其中,字符 X 是填充的无意义符号。
第三步:选择加密模式
根据实际需要选择不同的加密模式。
在古典密码矩阵排列法中,常用的加密模式包括行置换、列置换和对角线置换等。
行置换:将矩阵的每行重新排列。
例如,对于上述矩阵,进行行置换得到新的矩阵为:
l l H e
o o W
d r l X
列置换:将矩阵的每列重新排列。
例如,对于上述矩阵,进行列置换得到新的矩阵为:
o W l l
r l d o o
H e X l
对角线置换:将矩阵沿对角线翻转,得到新的矩阵。
例如,对于上述矩阵,进行对角线置换得到新的矩阵为:
H o r
e l l
l W
X o d
第四步:将加密后的矩阵转换成密文
将加密后的矩阵按照一定规律排列成一行或者一列,即得到加密后的密文。
例如,对于上述矩阵,按照行的顺序排列得到密文为:
l l H e o o W d r l X
加密后的密文可以直接传输或者存储,只有解密者拥有正确的解密密
钥,才能将密文还原成明文。
总结:
古典密码矩阵排列法是一种古老而有效的加密方式,虽然安全性与时俱进的加密方式无法比拟,但在某些应用场景下仍有其优势。
在实际应用中,需要根据实际需求选择适当的矩阵大小和加密模式,并配合使用密钥完成加密和解密的过程。