20210204 - misc4 - 古典密码

凯撒加密

属于替代加密,明文中的所有字母都在字母表上向后(或向前)按照一个固定的数目进行偏移后被替换成密文。
2021-02-19T11:23:56.png

Plaintext: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
Ciphertext: QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD

关键词加密

单表代替加密,加密时选择一个关键词,若关键词有重复字母,去除除第一次出现的所有相同的字母。如“success->suce”。
将该关键词写在字母表的下方,并用字母表的其他字母按标准的顺序填写余下的空间。这样就构建了字母一一对应的关系,加密时用下面一行中的字母对应替换上面一行的字母;解密时用上面一行中的字母对应替换下面一行的字母。
2021-02-19T11:45:34.png


仿射加密

在仿射加密中,每个字母都对应一个数字(字母a~z分别对应数字0~25),仿射加密法的密钥为 0~25之间的数字对(a,b),a与26的最大公约数必须为1,即GCD(a, 26) = 1 ,这就是说,能整除 a 和 26 的数只有 1 ,例如 a= 2 就是不可以的,因为GCD(2, 26) = 2,a = 5 就可以,因为只有 1 能整除 5 和 26。 p 为明文字母对应的数字,c 为密文字母对应的数字。
2021-02-22T14:06:56.png

  • 解密时需要计算(或枚举)密钥数字对中 a 的逆元,也就是 a 对 26 的模反数。
  • 模反数可以简单理解为整数环中的倒数,a 乘以 a 的模反数对 26 取模等于 1。例如 5 对 26 的逆元就是 21。
  • 所以一个数乘以 a,再乘以 a 的逆元,就能算回原来的数。

2021-02-22T14:09:22.png
解密时已知密钥对 (a, b),以及密文 c,可以通过下面的同余式计算出明文 p。
2021-02-22T14:09:59.png
2021-02-22T14:10:06.png
由于密钥对 (a, b) 的两个变量有效的值都是小于26的,所以枚举也是完全可以承受的。
得到 (a, b) 之后就可以正常解密了。
仿射加密本质上也是通过密钥对 (a, b) 生成了一个密码表,明文和密文中的字母具有一一对应的关系,且 a 与模数 26 互素保证了不重不漏。
所以仿射加密也是一种单表替换加密,虽然比前面两种生成密码表的方式复杂一些,但也是顶不住针对单表替换的密码分析的。


单表替代密码分析

可以利用不同的英文字母在文段中的出现频率特征,来帮助我们判断某个字母被替换成了某个字母的可能性。
2021-02-22T14:10:49.png
双联字母也可以辅助分析。
2021-02-22T14:20:31.png
另外,如果有一个较大的单词库,还可以通过单词的格式,进一步帮助我们缩小可能的范围,例如单词happy,为12334格式,success为1233411格式,那么被进行单表替换后,它的格式并不会发生改变。
分析网站:https://quipqiup.com/


维吉尼亚加密

维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码。为了生成密码,需要使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。
2021-02-22T14:22:42.png

  • 明文:ATTACKATDAWN
  • 选择关键词:LEMON,重复关键词,直到长度和明文相同,作为密钥:LEMONLEMONLE
  • 通过等长的明文和密钥,依次查表得到密文:LXFOPVEFRNHR

解密的过程则与加密相反。例如:根据密钥第一个字母 L 所对应的 L 行字母表,发现密文第一个字母 L 位于 A 列,因而明文第一个字母为 A 。密钥第二个字母 E 对应 E 行字母表,而密文第二个字母 X 位于此行 T 列,因而明文第二个字母为 T。以此类推便可得到明文。
维吉尼亚加密可以避免直接的词频分析攻击,密文在统计上没有明显的规律,但是仍然有方法可以对其进行破解。
密钥的重复部分与明文中的重复部分的连接,在密文中也产生一个重复部分
如果一个字符串在明文中重复,并且被密钥相同的部分加密,那么在密文中也会出现重复的字符串。
2021-02-22T14:31:22.png
一旦确定了关键词的长度,余下的问题就只是如何使用该信息去找到真正的关键词了。关键词的长度揭示了密文可以被如何破解成单码加密的一个集合。
关键词的长度为n,那么破解维吉尼亚加密的问题就变成了解决n个单表加密的问题,需要有足够长的密文,然后通过词频分析逐个解决问题。


替换和编码

  • 摩尔斯电码

用一个电键可以敲击出点、划以及中间的停顿。
2021-02-22T14:32:25.png

  • 福尔摩斯跳舞的小人

2021-02-22T14:32:31.png

  • 敲击码

.. ... 或 2,3 表示第2行,第3列,H
2021-02-22T14:32:41.png

  • 培根密码

2021-02-22T14:32:47.png

  • 类型和编码

2021-02-22T14:44:16.png

 - 进制转换
![2021-02-22T14:47:21.png][16]
 - 字符串(str)类型和字节(bytes)类型相互转换
![2021-02-22T14:47:31.png][17]
 - base64 编码解码
![2021-02-22T14:47:40.png][18]
 - 整数/字节转换
![2021-02-22T14:47:47.png][19]

本文链接:

https://littlewhite.fun/index.php/141.html
1 + 2 =
快来做第一个评论的人吧~