应用密码学(第2版)—第2章 古典密码技术(考试复习版)

目录

一、替代密码(substitution cipher)

(一)主要特点

(二)分类—根据密码算法加解密时使用替换表多少的不同

1.单表替代密码(加解密时使用一个固定的替换表)

(1) 一般单表替代密码

(2) 移位密码(又叫加法密码)

加密变换:Ek(m) = m+k (mod 26)

解密变换:Dk(c) = c-k (mod26)

(3) 仿射密码(重点、考点、必记)

2.多表替代密码(加解密时使用多个替换表)

(1)维吉尼亚密码

(2)希尔密码(Hill)(重点)

(3)一次一密密码(One Time Pad)(考点:选择、判断)

(4)Playfair密码

二、置换密码(Permutation Cipher)(又称换位密码)

(一)主要特点

(二)分类

1.周期置换密码

2.列置换密码

三、轮转机密码


 


 

一、替代密码(substitution cipher)

(一)主要特点

    替代密码是指先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串,即密文;解密时则利用对应的逆替换表,将需要解密的密文依次通过查表,替换为相应的字符即可恢复出明文。

替代密码的密钥就是其替换表。

(二)分类—根据密码算法加解密时使用替换表多少的不同

1.单表替代密码(加解密时使用一个固定的替换表)

(1) 一般单表替代密码

明文空间:26个英文字母的集合     密文空间:26个英文字母的集合

密钥空间:K={ Π: Z26-Z26 | Π是置换 }

对任意Π属于K,加密变换:eπ(m)=π(m)=c     解密变换:dπ(c)= π-1(c)=m,π-1是Π的逆置换 

(2) 移位密码(又叫加法密码)

明文空间M、密文空间C、密钥空间K满足 P=C=K={ 0,1,2,3.......25 }=Z26,即把26个英文字母与整数0—25一一对应,定义

加密变换:Ek(m) = m+k (mod 26)

解密变换:Dk(c) = c-k (mod26)

注:当K=3时,则此密码体制就是恺撒密码(Caesar Cipher)

(3) 仿射密码(重点、考点、必记)

明文空间和密文空间都为Z26,密钥空间K={ (k0,k1) |  k0,k1eq?%5CepsilonZ26,gcd(k1,26)=1},gcd(k1,26)=1即k1与26互素,最大公约数为1

加密变换:c=Ek(m)=k1m+k0 (mod26)

解密变换:m=Dk(c)=k1eq?%5E%7B%7D-1(c-k0) (mod26)

其中,k1*k1的逆=1 mod26,当k1=1时即为移位密码,当k0=0时即为乘法密码

解题方法:

*加密:1、根据给出的明文字母写出对应的数字

         2、带入加密变换解出密文对应的数字

         3、根据解出的数字写出对应字母即为密文

*解密:1、根据辗转相除法求出k1的逆置换

         2、根据给出的密文字母写出对应的数字

         3、带入解密变换解出密文对应的数字

         4、根据解出的数字写出对应字母即为明文

**若已知两个明密文对:直接带入加密变换中列出方程组求解未知数(两个方程式两个未知数可求解)

*求模m的明文空间、密文空间、密钥空间:Zm   Zm   m*eq?%5Cvarphi(m)

例:模35的明文空间和密文空间都为Z35,eq?%5Cvarphi(35)=4*6=24,所以密钥空间=24*35

2.多表替代密码(加解密时使用多个替换表)

(1)维吉尼亚密码

明文空间、密文空间及密钥空间都是长度为n的英文字母串的集合,可表示为M=C=K=(Z26)^n

其重复出现字母的距离是密钥长度的整数倍

(2)希尔密码(Hill)(重点)

基本思想:将n个明文字母通过线性变换将它们转换为n个密文字母,解密只需做一次逆变换即可

明文M与密文C均为n维向量,密钥K={ Z26上的n*n可逆矩阵 }

(判断矩阵是否可逆:计算矩阵的行列式,如果行列式的值不等于零,则矩阵可逆;如果行列式的值等于零,则矩阵不可逆)

加密变换:C=K*M(mod26)

解密变换:M=K-1 *  C(mod26)

其中,K-1为K在模26上的逆矩阵,满足:K * K-1=K-1 * K=I(mod26),I为单位矩阵

》例题:4c6dfd6e1a664595a808259579d21d05.jpg 》解: 151f54bce0d64dae81c7f03b6933068a.jpg

 

(3)一次一密密码(One Time Pad)(考点:选择、判断)

定义:若替代密码的密钥是一个随机且不重复的字符序列,这种密码则称为一次一密密码,因为它的密钥只使用一次。又称Vernam密码。

记:

1.香农从信息论的角度证明了这种密码体制在理论上是不可破译的

2.现实中,量子密码 。量子密钥分配协议:BB84通讯协议

3.量子通信—番建伟—墨子号(量子通信卫星)

4.实际上Vernam密码属于序列密码,加解密方法都使用模2加

5.该密码体制要求:密钥是真正的随机序列;密钥长度大于等于明文长度;每个密钥只使用一次

6.如果重复使用密钥,则该密码体制就很不安全

(4)Playfair密码

一种著名的双字母单表替代密码

二、置换密码(Permutation Cipher)(又称换位密码)

(一)主要特点

这种密码通过改变明文消息各元素的相对位置,但明文消息元素本身的取值或内容形式不变;

这种密码是把明文中各字符的位置次序重新排列来得到密文的一种密码体制;

(二)分类

1.周期置换密码

(1)思想:将明文字符按一定长度n分组,把每组中的字符按1,2...n的一个置换eq?%5Cpi重排位置次序来得到密文的一种加密方法。其密钥就是置换eq?%5Cpi,在eq?%5Cpi的描述中包含了分组长度的信息。解密时,对密文字符按长度n分组,并按eq?%5Cpi的逆置换把魅族字符重排位置次序来得到明文。

(2)例题

688be572351444e0a5ee5c08b91dc04e.jpg d8b3d590a59647f3956fdc25a11a4f27.jpg

2.列置换密码

(1)思想:将明文按行填写到一个列宽固定(设为m)的表格或矩阵中,然后按(1,2...m)的一个置换eq?%5Cpi交换列的位置次序,再按列读出即得到密文。解密时,将密文按列填写到一个行数固定(设为m)的表格或矩阵中,然后按(1,2...m)的一个置换eq?%5Cpi交换列的位置次序,再按行读出即得到明文。

(2)例题

三、轮转机密码

美国人Hebern发明了轮转密码机,简称轮转机(Rotor)。

 

未完待续............

 

 

  • 46
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
周期置换密码是一种简单的加密算法,它通过对明文进行周期性的置换来实现加密,具体步骤如下: 1. 将明文分成若干个长度为n的块,最后一个块如果不足n个字符,则在末尾补足相应的字符。 2. 定义一个长度为n的置换表,将每个块按照置换表进行置换。 3. 将置换后的块连接起来,得到密文。 解密的过程与加密相反,只需要将置换表反向使用即可。 下面是一个简单的Python实现: ```python def encrypt(plain_text, key): n = len(key) cipher_text = '' for i in range(0, len(plain_text), n): block = plain_text[i:i+n] if len(block) < n: block += ' ' * (n - len(block)) permuted_block = '' for j in range(n): permuted_block += block[key[j]-1] cipher_text += permuted_block return cipher_text def decrypt(cipher_text, key): n = len(key) plain_text = '' for i in range(0, len(cipher_text), n): block = cipher_text[i:i+n] permuted_block = '' for j in range(n): permuted_block += block[key.index(j+1)] plain_text += permuted_block return plain_text.strip() # 示例 plain_text = 'hello world' key = [5, 2, 1, 3, 4] cipher_text = encrypt(plain_text, key) print(cipher_text) # 'oelhlw lrod' decrypted_text = decrypt(cipher_text, key) print(decrypted_text) # 'hello world' ``` 在上面的示例中,我们使用了一个长度为5的置换表 `[5, 2, 1, 3, 4]`,对明文进行了加密和解密。加密后的密文为 `'oelhlw lrod'`,解密后得到的明文为 `'hello world'`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值