密码学古典密码模板
- 格式:ppt
- 大小:1002.50 KB
- 文档页数:61
古典密码集合下述密码均摘⾃互联⽹【字母表顺序】-数字 加密的时候,经常要把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)【间隔】 单词之间的间隔⼀般使⽤空格。
在加密时常常要去掉空格,但有时某些字母或数字来替代空格也不失为⼀种好的加密⽅案。
密码学原理流密码前面的密码体制中,连续的明文元素使用相同的密钥K来加密。
y=y1y2...=e k(x1)e k(x2)...这种类型的密码体制称为分组密码与分组密码的区别需要设计复杂的加密函数以提高安全性经常需要对明文进行填充(padding)操作以确保分组长度完整密钥管理将明文看作字符串或比特串,并逐字符或者逐位进行加密。
为了防止密钥穷举,使用和明文信息一样长的密钥(无限)流z=z 1,z 2...进行加密。
这种密码体制称为流密码(或序列密码)•可以使用非常简单的加密算法(如简单的异或运算)•关键是如何生成密钥流流密码设计思路1212z 1z 2y =y y =e (x )e (x )弗纳姆(Vernam)密码1918年,Gillbert Vernam建议密钥与明文一样长并且没有统计关系的密钥内容,他采用的是二进制数据:加密:Ci =Pi⊕Ki解密:Pi =Ci⊕Ki关键:构造和消息一样长的随机密钥流密码的代表流密码特点运算简单实时性强安全性依赖与密钥流的产生方法流密码的分类按密钥的周期性分类周期流密码•存在某个固定的正整数r,使得密钥流每隔r个字符(或者比特)以后重复。
非周期流密码•对任何正整数密钥流都不重复•如一次一密乱码本流密码的分类按密钥的产生方式分类同步流密码•密钥流的产生独立于消息流;•例如分组密码的OFB(输出反馈)模式异步流密码•每一个密钥字符是由前面n个明文或密文字符推导出来的,其中n为定值。
•例如分组密码的CFB(密码反馈)模式同步流密码使用某种算法,由一个初始密钥变换出和明文串相互独立的密钥流。
定义如下:同步流密码是一个六元组(P,C,K,L,E,D)和一个函数g,且满足如下条件•P,C,K分别是明文、密文、密钥的有限集。
•L是密钥流字母表有限集。
•g是密钥流生成器,g使用密钥k∈K作为输入,产生无限长的密钥流Z=z1z2...,其中z i∈L。
•对任意的z∈L,都有一个加密规则(函数)e z:P→C∈E和相应的解密规则(函数)d z:C→P∈D,并且对每个明文x∈P满足d z(e z(x))=x。
古典密码题目通常涉及到一些传统的加密方法,如凯撒密码、替换密码、转轮密码等。
以下是一些可能出现在古典密码题目:1. 凯撒密码(Caesar Cipher):- "If you can't decrypt this, you're not a real cryptographer."(如果你不能解密这个,那你不是真正的密码学家。
)2. 替换密码(Substitution Cipher):- "The quick brown fox jumps over the lazy dog."(快brown 狐狸跳过懒狗。
)3. 转轮密码(Rotary Cipher):- "The secret message is hidden in the plain text."(秘密信息隐藏在明文中。
)4. 奇偶校验(Parity Check):- "This message has even parity. Can you crack it?"(这条信息有偶校验。
你能破解它吗?)5. 线性反馈移位寄存器(LFSR):- "The sequence generated by the LFSR is 1010101110. What is the original message?"(LFSR生成的序列是1010101110。
原来的信息是什么?)6. 摩尔斯电码(Morse Code):- " dot dot dash dash dot dot dot equals V."(点点拉斯拉斯点点点等于V。
)7. 一次性密码本(One-Time Pad):-"The key to this one-time pad is 'lemon'. What does the message say?"(这个一次性密码本的关键是'lemon'。
古典密码-单表密码体制如果明⽂中不同的位置的同⼀明⽂字母在密⽂中对应的密⽂字母相同,则称其为单表密码体制。
代表性的单表密码:1.移位或加法密码2.乘数或乘法密码3.仿射密码4.密钥短语密码下⾯分别举⼀个例⼦:1.加法密码算法:P=C=K=Z m (Zm∈{0,1,...,m-1})E k(x)=x+k(mod m)=y∈CD k(y)=y-k(mod m)=x∈P当k=3时,该密码算法就是凯撒密码。
E3(1)=1+3(mod 26)=4 1代表A,4代表D,所以就把明⽂A加密成DD3(4)=4-3(mod 26)=1 所以把密⽂D,解密成明⽂A这种算法容易受到唯密⽂攻击,由算法可知,密钥的可能性个数为m,如果是英语字母表,只有26个字母,那么只要尝试25种(不包括0,因为m=0就等于是明⽂了)密钥,就能破解该算法。
2.乘法密码算法P=C=Z mK={a ∈Z m | (a, m)=1}E a(x)=a x (mod m) =y ∈CD a (y)=a-1y (mod m) =x ∈P(a-1是a对于m的乘法逆元)当m=26,P=C=Z26,K={a ∈Z26 | (a, 26)=1},E a(x)=a x (mod 26) =y ∈CD a (y)=a-1y (mod 26) =x ∈P(a-1是a对于26的乘法逆元)当a=9时,逆元a-1=3E9(x)=9x (mod 26)=y ∈CD9(y)=3y (mod 26)=x ∈P加密过程:字符B,对应的X=1 y=E9(x)=9*1 (mod 26)=9 替换为字符J解密过程:字符J,对应y=9 x=D9(x)=9*3 (mod 26)=1 还原为字符B对于乘数密码,当且仅当a与26互素时,加密变换才是⼀对⼀映射的。
因此a的选择只有11种:3,5,7,9,11,15,17,19,21,23,25,可能的密钥只有11种!3.仿射密码算法:P=C=Z mK={(a,b)∈Z m×Z m|(a,m)=1}E(a,b) (x)=ax + b (mod m)D(a,b) (y)=a-1(y-b)(mod m)当a=1时,变为加法密码当b=0时,变为乘法密码所以,加法密码和乘法密码是仿射密码的特例。
定义:如果a (x )·b (x )=1 mod p (x ),称a (x )是b (x )的乘法逆元乘法逆元记为1()()mod ()b x a x p x −=古典密码•古典密码对于今天来说,是极不安全的,是极易破解的,但其基本方法仍然是近、现代密码学的基础。
•古典密码运用的两种基本技术:–代换法:将明文字母替换成其他字母、数字或符号–置换法:明文的字母保持相同,但顺序被打乱1. 代换密码–通常建立一个替换表.加密时将需要加密的明文依次通过查表,替换为相应的字符,即密文。
–代换密码可以分为两类:¾单表代换对明文消息中出现的同一个字母.在加密时都用同一个固定的字母来代换。
如,移位密码、仿射密码¾多表代换明文消息中出现的同一个字母,在加密时不是完全被同一个固定的字母代换,而是根据其出现的位置次序,用不同的字母代换。
如,维吉利亚密码、P1ayfair密码。
如,明文: hello密文: YATTR 明文: hello密文: ABNZF←可能是单表代换←不是单表代换()()mod k c E m m k q ==+加密变换:{0,1,2,,1}q q =−]"选定常数q 和k (密钥)()()mod k m D c c k q==−解密变换:明文空间=密文空间=1)加法密码:(1) 单表代换密码2)移位密码()()mod 26k c E m m k ==+加密变换:26{0,1,2,,25}=]"()()mod 26k m D c c k ==−解密变换:明文空间=密文空间=移位密码的一个典型代表就是Caesar 密码.它是移位密码当k =3时的特例, 密钥k英文字母被编码为该字母的序号英文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 数字0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24253()(3)(mod 26),025c E m m m ==+≤≤加密变换:解密变换:3()(3)(mod 26),025m D c c c ==−≤≤3) Caesar 密码(恺撒密码)——是加法密码其密钥k =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 D E F G H I J K L M N O P Q R S T U V W X Y Z A B C例. 设明文消息为:I am mine ,试用恺撒密码对其进行加密,然后再进行解密。
古典密码学案例那我给你讲个“恺撒密码”的案例吧,这可是古典密码学里超有名的。
话说在古代罗马,有个叫恺撒的大佬。
他这人啊,要给手下的将领们传递军事机密,但又怕被敌人截获消息。
于是呢,他就想出了一个超级简单却又很有效的加密办法。
他规定,把每个字母都按照字母表的顺序往后移动三位。
比如说,字母A就变成了D,B就变成E,以此类推。
要是到了字母表末尾不够移了咋办呢?就从字母表开头接着算。
像X就变成A,Y变成B,Z变成C。
咱举个例子哈。
假如他要传达一个消息:“ATTACK AT DAWN”(凌晨进攻)。
按照恺撒密码加密后就变成了“DWWDFN DW GDZQ”。
你看,这要是被敌人截获了,看起来就像一堆乱码,根本不知道啥意思。
不过呢,这加密方法也有个小问题。
要是有人知道这是恺撒密码,只要把每个字母往前移三位就能破解了。
这就好像是一把简单的锁,知道开锁的小窍门就很容易打开。
但在当时那个时代,这也算是很厉害的保密手段啦。
还有个“棋盘密码”的案例呢。
想象一下,有一个5×5的棋盘,就像下棋的棋盘一样。
我们把26个英文字母(I和J算一个格子)放在这个棋盘里。
比如说,第一行第一个格子放A,第一行第二个格子放B,一直到第五行第五个格子放Z(I和J共用一个格子,假设放在第一行第二列)。
如果要加密一个单词“HELLO”。
H在棋盘里是第二行第三列,那我们就可以用23来表示它;E是第一行第五列,就用15;L在第三行第一列,就是31;第二个L也是31;O在第三行第四列,就是34。
这样,“HELLO”加密后就变成了“23 15 31 31 34”。
这就好像是给每个字母都换了个特殊的代号,别人不知道这个棋盘的排列规则,就很难猜出原来的单词是啥。
这在古代也是一种很有趣的保密小技巧呢。
古典密码是一种古老的加密技术,它使用各种规则将信息转换成难以理解的符号序列,以达到保密的目的。
下面是一个古典密码的例题,介绍如何使用摩尔斯电码进行加密和解密。
例题:加密一封密信
假设你收到一封密信,内容是:“.-==”。
这封密信是用摩尔斯电码进行加密的,其中每个符号代表一个英文字母或数字。
根据摩尔斯电码的规则,可以将其解密为字母“E”。
首先,我们来了解一下摩尔斯电码的规则:
* 点(.)代表字母“T”;
* 短横线(-)代表字母“L”;
* 长横线(--)代表字母“Z”;
* 长横线接短横线(===)代表字母“E”。
现在我们根据这些规则将密信中的每个符号进行解密:
* “.-”代表短横线-和点.相连,可以理解为字母“L”;
* “==”代表长横线和点.相连,可以理解为字母“Z”;
* 重复出现的长横线(===)代表字母“E”。
将这三个字母拼在一起,可以得到字母“E”。
因此,这封密信可以解密为字母“E”。
在实际应用中,古典密码还有很多其他规则和技巧,例如使用数字代替字母、使用特殊的符号等。
这些规则和技巧可以让古典密码更加难以破解。
同时,随着技术的进步,现代密码学也在不断发展,古典密码也逐渐被淘汰。
但是,了解古典密码的历史和原理,对于理解现代密码学的发展和演变仍然具有重要意义。
总之,古典密码是一种历史悠久的加密技术,它通过各种规则将信息转换成难以理解的符号序列,以达到保密的目的。
通过了解古典密码的原理和规则,我们可以更好地理解现代密码学的演变和发展,同时也可以提高我们的信息安全意识。