古典密码汇总
- 格式:docx
- 大小:36.45 KB
- 文档页数:2
古典密码频率分析法——密码中最常出现的字母,亦为明文文本中最常用的字母。
(每种语言词汇的使用都会有一定的频率)。
隐藏信息于熟蛋壳内的方法:1盎司(约28.3克)的明矾和1品脱(约0.57升)的醋混合而成的特殊墨水把信息写在蛋壳上,墨水可以穿透多孔的蛋壳,不在表面留下任何痕迹,却留在凝固的蛋白上,剥开蛋壳即可看到信息。
隐形墨水:尿液,阿司匹林,氨基比林都可用作隐形墨水。
牛奶墨水:牛奶上写信息没有颜色,火烤时蛋白质变性凝固,颜色就发生变化,信息就显现出来。
清水墨水:清水写在纸上,被水侵湿的地方会变得蓬松和粗糙,用碘蒸汽熏时,细小的颗粒会吸附到这,从而显示信息。
五倍子墨水(中药店买得到的中药):其中有丰富的鞣酸,鞣酸溶液透明,但其遇到铁盐化合物就会清析的显示信息。
(其都称为隐文术,隐藏的是信息,不对信息本身进行编排,可以用一切手段伪藏信息,例如伪藏在乐曲中,用摩斯密码伪藏在字画中。
最好的原则是把信息伪藏在公开信息中,从而不引起大众的好奇心理。
)密码术简单密码术:藏头诗,藏尾诗,回文诗,诗迷,哑谜,密写。
九宫格密码:用符号结构替代英文的26个字母(编写一套密码即编写一套符号系统,表达各个符号的组合即代码)折线密码:P F I C N A M Z O Q X D E R B H V K Y J T U G L S W(明文为I LOVE YOU DEARLY )写信息时,从第一个字母开始画一条直线,直到第二个字母,然后折回第三个字母,以此类推,直至写完。
密码均可以以此为基础进行变种,如:U D Q N Y S O I V A X M F C J Z B T W G L H K P E R即:I LOVE YOU DEEPLY书卷密码:可以用多个数字替换一个字母,从而减少了明文词汇使用频率的暴露。
先取一段文章作为密钥,然后给文章段落或者文字编号,每个编号代表段落的首字或者单词的第一个字母,从而得到一组替换密钥(yue),并以此来加密明文:下面是一段明文:1For, 2example, 3if, 4the, 5sender, 6and, 7receiver, 8agree, 9that, 10 this, 11sentence, 12were, 13to, 14be, 15the, 16keytext, 17then 18every, 19word, 20would, 21be, 22numerically, 23labeled, 24each, 25number, 26providing, 27the, 28basis, 29for, 30enceyption.然后把每个数字代表的单词的第一个字母列成一张表:1=F 2=E 3=I 4=T 5=S 6=A 7=R 8=A 9=T 10=T 11=S 12=W 13=T 14=B 15=T 16=K 17=T 18=E 19=W 20=W 21=B 22=N 23=L 24=E 25=N 26=P 27=T 28=B 29=F 30=E然后就可以用字母替换成的数字加密,但明文密钥中各字母出现的频率不一样,因此有一些字母不能被替换,有些字母被多次替换的情况,未被替换的字母可以用任意数字替换。
古典密码作为⼀个不务正业的密码⼿,稍微学⼀点点密码(主要是⽔⼀篇博客)。
密码学中,最基础的是古典密码。
按照百度百科的说法,古典密码⽆⾮两种:置换与代换。
置换就是把明⽂中的字母(或者其他什么东西)换换位置,但是那些字母还是它们⾃⼰,⽐如把kroos换成soork就是⼀种置换。
代换就是把明⽂中的字母换成别的字符,⽐如把kroos换成11,18,15,15,19(这⼏个字母在字母表中的位置)就是⼀种代换。
这么看来,简单的置换与代换所产⽣的加密⽅法⽐较好破解,基本上都可以⽐较简单地破解出来,以下是⼏种常见古典密码。
凯撒密码: 它的做法是按照字母表把明⽂中的字母变成数字,再偏移⼏位,再转换回字母,这是⼀种⾮常典型的代换密码 ⽽它的破解也很简单,毕竟字母表⼀共就26位,最多试26次就可以了栅栏密码: 它的做法是把明⽂分成⼏个不同的部分,⽐如: 明⽂是: 可以把它分成两个部分: 再之后,把第⼆个部分排在第⼀部分的后⾯,变成: 这就加密完了,解密也⼗分简单 ⾸先把密⽂分成两⾏: 之后再把它每⾏读⼀个就可以了: 栅栏密码破解也⽐较简单,只要猜测总共把字符分成了⼏个部分就可以了。
维吉尼亚密码: 维吉尼亚密码是⼀个破解难度相对较⾼的古典密码,它采⽤了简单的多表代换。
⾸先使⽤维吉尼亚密码需要密钥 具体操作如下: 假如明⽂为: 然后可以选择⼀个关键词然后将它反复重复变成密钥,⽐如关键词为LEMON时,密钥为: 之后,⽤密钥的第n位加密明⽂的第n位,⽐如⽤L加密A,⽤E加密T等等,⽽具体⽅法如下: 当然,也不⼀定需要查表,可以⽤数学的⽅法求出: 在知道密钥的情况下,可以直接解密 ⽤这种⽅法,在不知道密钥(或者关键词)的情况下,破解有些难度,不过有⼀个⼤致的思路: 因为维吉尼亚密码的密钥是循环重复的(假如它不是⽽你⼜不知道密钥,那就是⼀次⼀密的加密,破解⼏乎没有可能),所以维吉尼亚密码可以看做很多组凯撒密码 这样的话,在⽂本较长的情况下,就有可能出现相同的单词遇到的密钥也⼀样的情况,这样就会导致密⽂中出现重复字段 找到相同字段间的距离,可以⼤致判断出关键词长度是距离的因数 多找⼀些不同的重复字段,找到距离找公因数可以⼤致算出密钥长度,再尝试猜测密钥即可 不过,实际上这已经需要⾮常巨⼤的⼯作量了,因此,维吉尼亚密码在不知道密钥的情况下较难破解。
古典密码集合下述密码均摘⾃互联⽹【字母表顺序】-数字 加密的时候,经常要把A~Z这26个字母转换成数字,最常见的⼀种⽅法就是取字母表中的数字序号。
A代表1,B代表2,C代表3... 字母 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 数字 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26【进制转换密码】 例如⼆进制:1110 10101 1101 10 101 10010 1111 1110 101 转为⼗进制:14 21 13 2 5 18 15 14 5 对应字母表:number【Mod算法】 我们可以对字母序号进⾏数学运算,然后把所得的结果作为密⽂。
当运算结果⼤于26或⼩于1的时候, 我们希望把这个数值转为1~26的范围,那么取这个数除以26的余数即可。
Mod就是求余数的运算符,有时也⽤“%”表⽰。
例如 29 Mod 26 = 3,或写成 29 % 26 = 3,意思是29除以26的余数是3。
【倒序】 加密时为经常要对字符进⾏倒序处理。
如果让你按abcdef...的顺序背出字母表的每个字母会很容易, 但是如果是zyxwvu...的顺序那就很难背出来了。
⼀个很熟悉的单词,如果按相反的顺序拼写,可能就会感到很陌⽣。
例如“love”字母倒过来拼就是“evol”。
具体加密时倒序有很多种⽅案,需要灵活运⽤。
例如: 每个单词的倒序:siht si a tset - this is a test 整句的倒序:tset a si siht - this is a test 数字的倒序:02 50 91 02 - 20 05 19 20(test)【间隔】 单词之间的间隔⼀般使⽤空格。
在加密时常常要去掉空格,但有时某些字母或数字来替代空格也不失为⼀种好的加密⽅案。
古典密码的加密方法
古典密码是指在密码学中较早出现和较简单的加密方法,主要包括凯撒密码、凯恩密码、维吉尼亚密码等。
1. 凯撒密码:由罗马帝国大军领袖凯撒所使用的密码。
加密时,将明文中的每个字母向后移动固定的位置。
例如,将明文中的每个字母向后移动三位。
解密时,将密文中的每个字母向前移动三位。
2. 凯恩密码:由大英帝国舰队司令官查尔斯·凯恩所使用的密码。
加密时,将明文中的每个字母移动一个随机位置。
解密时,将密文中的每个字母移动一个相反的位置。
3. 维吉尼亚密码:由伊丽莎白一世女王的情报官员布尔内特所使用的密码。
加密时,根据明文中的字母在密钥中找到对应的字母,将明文字母替换为密钥字母。
密钥是一个周期性的字母序列,长度与明文相同。
解密时,根据密文中的字母在密钥中找到对应的字母,将密文字母替换为密钥字母。
这些古典密码的加密方法在现代密码学中已经不再安全,容易被破解,因此不再被广泛使用。
现代密码学更多地采用基于数学原理的复杂加密算法,如对称加密算法、非对称加密算法等。
古典密码学介绍过去的十几周里面,《趣味密码学》在我的脑海中形成看基本的轮廓。
基于老师的授课知识点和我在网上搜索的相关资料,对于古典密码学的相关内容及其发展有了一定的了解和认识。
密码学在公元前400多年就早已经产生了,正如《破译者》一书中所说“人类使用密码的历史几乎与使用文字的时间一样长”。
密码学的起源的确要追溯到人类刚刚出现,并且尝试去学习如何通信的时候,为了确保他们的通信的机密,最先是有意识的使用一些简单的方法来加密信息,通过一些(密码)象形文字相互传达信息。
接着由于文字的出现和使用,确保通信的机密性就成为一种艺术,古代发明了不少加密信息和传达信息的方法。
例如我国古代的烽火就是一种传递军情的方法,再如古代的兵符就是用来传达信息的密令。
就连闯荡江湖的侠士,都有秘密的黑道行话,更何况是那些不堪忍受压迫义士在秘密起义前进行地下联络的暗语,这都促进了密码学的发展。
密码学的发展也经历了三个阶段的发展:古代加密方法(手工阶段)、古典密码(机械阶段)、近代密码(计算机阶段)。
而古典密码有着悠久的历史,从古代一直到计算机出现以前,古典密码学主要有两大基本方法:①代替密码:就是将明文的字符替换为密文中的另一种的字符,接收者只要对密文做反向替换就可以恢复出明文。
②置换密码(又称易位密码):明文的字母保持相同,但顺序被打乱了。
现在介绍几种简单的古典密码学:1.滚桶密码在古代为了确保他们的通信的机密,先是有意识的使用一些简单的方法对信息来加密。
如公元六年前的古希腊人通过使用一根叫scytale的棍子,将信息进行加密。
送信人先将一张羊皮条绕棍子螺旋形卷起来(如图),然后把要写的信息按某种顺序写在上面,接着打开羊皮条卷,通过其他渠道将信送给收信人。
如果不知道棍子的宽度(这里作为密匙)就是不容易解密里面的内容的,但是收信人可以根据事先和写信人的约定,用同样的scytale的棍子将书信解密。
2. 掩格密码16世纪米兰的物理学和数学家Cardano发明的掩格密码,可以事先设计好方格的开孔,将所要传递的信息和一些其他无关的符号组合成无效的信息,使截获者难以分析出有效信息。
古典密码学教学⼀.⽬录0x01.常见的古典密码1.凯撒密码2.栅栏密码3.猪圈密码4.埃特什码5.希尔密码6.培根密码7.QWE密码/键盘密码8.enigma密码9.摩斯密码10.跳舞的⼩⼈0x02.凯撒密码恺撒密码(恺撒加密、恺撒变换、变换加密),是⼀种最简单且最⼴为⼈知的加密技术。
它是⼀种替换加密的技术,明⽂中的所有字母都在字母表上向后(或向前)按照⼀个固定数⽬进⾏偏移后被替换成密⽂。
例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
代码实现,此处使⽤python来实现:plaincode= input("请输⼊明⽂:") for p in plaincode: if ord("a") <= ord(p) <= ord("z"): print(chr(ord("a")+(ord(p)-ord("a")+3)%26),end='') else: print(p,end='')0x03.栅栏密码①把将要传递的信息中的字母交替排成上下两⾏。
②再将下⾯⼀⾏字母排在上⾯⼀⾏的后边,从⽽形成⼀段密码。
③例如:明⽂:THE LONGEST DAY MUST HAVE AN END加密:1、把将要传递的信息中的字母交替排成上下两⾏。
T E O G S D Y U T A E N NH L N E T A M S H V A E D2、密⽂:将下⾯⼀⾏字母排在上⾯⼀⾏的后边。
TEOGSDYUTAENN HLNETAMSHVAED解密:先将密⽂分为两⾏T E O G S D Y U T A E N NH L N E T A M S H V A E D再按上下上下的顺序组合成⼀句话明⽂:THE LONGEST DAY MUST HAVE AN ENDpython代码实现:`def encode():hang1 = []hang2 = []string = input('请输⼊要加密的字符串:')li = list(string) # 将字符串转换为列表# print(li)for i in range(0, len(li)): # 循环遍历列表长度if i % 2 == 0: # 模2取余hang1.append(li[i])# print(hang1)else:hang2.append(li[i])he = hang1 + hang2 # 列表连接print('加密成功,密⽂为:')# print(he)for i in he:print(i, end='') # 遍历输出he,end为空(不换⾏)def decode():hang1 = []hang2 = []string = input('请输⼊要解密的字符串:')li = list(string) # 将字符串转换为列表for i in range(0, len(li)): # 循环遍历列表长度if i % 2 == 0: # 模2取余hang1.append(li[i])else:hang2.append(li[i])he = hang1 + hang2 # 列表连接print('解密成功,明⽂为:')for i in he:print(i, end='') # 遍历输出he,end为空(不换⾏)if name == 'main':def start():print('*栅栏密码')print('请选择功能:1.加密 2.解密 3.退出')print('请输⼊数字以选择:')choose = input()if choose == '1': # 条件选择encode()elif choose == '2':decode()else:exit()start() # ⾸次⽅法调⽤while input('请输⼊是否继续(y/n):') == 'y': # 循环⽅法调⽤start()`0x03.猪圈密码猪圈密码(Pigpen cipher,亦称朱⾼密码、共济会密码)是⼀种以格⼦为基础的简单替代式密码。
西方古典密码方式是一种古老的加密技术,起源于古希腊和罗马时期。
这种密码方式主要通过替换、移位和排列等方法对原始信息进行变换,以达到保密的目的。
以下是一些常见的西方古典密码方式:1.凯撒密码(Caesar Cipher):这是最早的一种古典密码方式,由古罗马将领凯撒发明。
凯撒密码的原理是将明文中的每个字母按照一个固定的偏移量进行移位。
例如,如果偏移量为3,那么字母A将被替换为D,B将被替换为E,以此类推。
凯撒密码的优点是实现简单,但缺点是容易被破解,因为偏移量通常是26的倍数。
2.维吉尼亚密码(Vigenere Cipher):这是一种基于凯撒密码的变种,由法国密码学家布莱斯·德·维吉尼亚发明。
维吉尼亚密码的原理是将明文和密钥都分成一系列字母,然后按照密钥字母的顺序将明文字母进行替换。
维吉尼亚密码的优点是安全性较高,但缺点是需要密钥长度与明文长度相同。
3.栅栏密码(Rail Fence Cipher):这是一种通过置换和重组的方法对明文进行加密的古典密码方式。
栅栏密码的原理是将明文按照一定的宽度分为若干行,然后将这些行按照特定的顺序进行排列,最后将排列后的字符连接起来形成密文。
栅栏密码的优点是实现简单,但缺点是解密过程较为复杂。
4.希尔密码(Hill Cipher):这是一种基于线性代数的古典密码方式,由美国数学家Lester S. Hill发明。
希尔密码的原理是将明文和密钥都表示为矩阵,然后通过矩阵乘法对明文进行加密。
希尔密码的优点是安全性较高,但缺点是计算复杂度较高。
5.仿射密码(Affine Cipher):这是一种基于线性代数的古典密码方式,由法国密码学家阿德里安·卡西斯基发明。
仿射密码的原理是将明文和密钥都表示为向量,然后通过向量加法和标量乘法对明文进行加密。
仿射密码的优点是安全性较高,但缺点是密钥空间较小。
总之,西方古典密码方式在古代起到了重要的保密作用,为后世的密码学发展奠定了基础。
古代密码的发明古代密码的发明可以追溯到几千年前的古埃及和古罗马时期。
以下是一些古代密码的发明和应用:1. 凯撒密码(Caesar cipher):古罗马皇帝凯撒大约在公元前58年创造了凯撒密码。
这种密码是一种位移密码,将字母进行固定的位移后形成密文。
例如,将字母A按照位移3进行加密,结果就是D,依此类推。
凯撒密码是历史上最早使用的密码之一。
2. 路易密码(Vigenère cipher):16世纪的法国人布吕日·德·维吉尼亚(Blaise de Vigenère)发明了维吉尼亚密码。
这种密码使用一个关键字作为加密密钥,并将每个字母与关键字相对应的字母进行位移加密。
维吉尼亚密码比凯撒密码更复杂,更难破解。
3. 密雾密码(Playfair cipher):19世纪早期,英国律师查尔斯·维特斯通(Charles Wheatstone)和查尔斯·韦尔密(Charles Wheatstone)合作发明了密雾密码。
这种密码使用一个5x5的方阵(称为Playfair方阵)来加密,并且按照一定的规则进行替换。
它在19世纪末和20世纪初被广泛用于外交和军事通信。
4. 兰金密码(Enigma machine):20世纪早期,德国工程师亚瑟·兰金(Arthur Scherbius)发明了兰金密码机。
这是一种使用电机和旋转轮盘的密码机,被纳粹德国在第二次世界大战期间用于加密军事通信。
兰金密码机具有极高的复杂性,被认为无法破解。
这些古代密码的发明都推动了密码学的发展,并对现代密码学产生了重要影响。
现今的密码学系统与古代密码相比更加复杂和安全,但是古代密码的发明为密码学的进步奠定了基础。
古典密码汇总
古典密码是指在计算机技术出现之前使用的一种数据加密方式。
以下是一些常见的古典密码:
1. 凯撒密码:将明文中的每个字母按照字母表顺序向后移动固定的位置来生成密文。
2. 维吉尼亚密码:通过使用不同的密钥按字母表顺序对明文逐字母进行移位加密。
3. 单换密码:根据某种规则将明文中的每个字母替换为另一个字母来生成密文。
4. 多换密码:类似于单换密码,但使用多个替换规则来加密明文。
5. 栅栏密码:将明文按照一定长度分成多行,然后按行输出密文。
6. 简单替换密码:将明文中的每个字母替换为另一个字母或符号来生成密文。
7. 维因纳尔方阵密码:使用一个方阵将明文中的字母映射为密文中的其他字母。
8. 培根密码:将明文中的每个字母映射为5个二进制位,然后用A和B表示。
这只是一小部分古典密码,还有许多其他类型的古典密码存在。
由于古典密码的安全性相对较低,现代密码学已经发展出了更加复杂和安全的加密算法。