古典密码学
单表代换加密
凯撒密码
凯撒密码(Caesar)加密时会将明文中的 每个字母 都按照其在字母表中的顺序向后(或向前)移动固定数目(循环移动)作为密文。
此外,还有还有一种基于密钥的凯撒密码 Keyed Caesar。其基本原理是 利用一个密钥,将密钥的每一位转换为数字(一般转化为字母表对应顺序的数字),分别以这一数字为密钥加密明文的每一位字母。
密文:s0a6u3u1s0bv1a
密钥:guangtou
偏移:6,20,0,13,6,19,14,20
明文:y0u6u3h1y0uj1u
移位密码
与凯撒密码类似,区别在于移位密码不仅会处理字母,还会处理数字和特殊字符,常用 ASCII 码表进行移位。其破解方法也是遍历所有的可能性来得到可能的结果。
Atbash Cipher
埃特巴什码(Atbash Cipher)其实可以视为下面要介绍的简单替换密码的特例,它使用字母表中的最后一个字母代表第一个字母,倒数第二个字母代表第二个字母。
明文: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
密文:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
明文:the quick brown fox jumps over the lazy dog
密文:gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt
简单替换密码
有自己的字母表,密钥个数是26!
一般采用词频分析破解
仿射密码
加密函数是
其中
- x 表示明文按照某种编码得到的数字
- a 和 m 互质 (解码的时候需要逆元,而只有互素的情况下才有逆元;互素的情况下才能遍历完全剩余系)
- m 是编码系统中字母的数目。
| 明文 | A | F | F | I | N | E | C | I | P | H | E | R |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| x | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | 7 | 4 | 17 |
| y=5x+8y | 8 | 33 | 33 | 48 | 73 | 28 | 18 | 48 | 83 | 43 | 28 | 93 |
| ymod26 | 8 | 7 | 7 | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
| 密文 | I | H | H | W | V | C | S | W | F | R | C | P |
解密函数是
其中 a−1 是 a 在 Zm 群的乘法逆元。
| 密文 | I | H | H | W | V | C | S | W | F | R | C | P |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| yy | 8 | 7 | 7 | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
| x=21(y−8) | 0 | -21 | -21 | 294 | 273 | -126 | 210 | 294 | -63 | 189 | -126 | 147 |
| xmod26 | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | 7 | 4 | 17 |
| 明文 | A | F | F | I | N | E | C | I | P | H | E | R |
仿射密码分析
多表代换密码
加密后的字母几乎不再保持原来的频率。因为一个字母可以被加密成多种密文。
Palyfair
- 处理密钥。选取一串英文字母,除去重复出现的字母,将剩下的字母逐个逐个加入 5 × 5 的矩阵内,剩下的空间由未加入的英文字母依 a-z 的顺序加入。注意,将 q 去除,或将 i 和 j 视作同一字。
- 处理明文。将要加密的明文分成两个一组。若组内的字母相同,将 X(或 Q)加到该组的第一个字母后,重新分组。若剩下一个字,也加入 X 。
- 得到密文。在每组中,找出两个字母在矩阵中的地方。
- 若两个字母不同行也不同列,在矩阵中找出另外两个字母(第一个字母对应行优先),使这四个字母成为一个长方形的四个角。
- 若两个字母同行,取这两个字母右方的字母(若字母在最右方则取最左方的字母)。
- 若两个字母同列,取这两个字母下方的字母(若字母在最下方则取最上方的字母)。
例子
以 playfair example 为密匙,得
P L A Y F
I R E X M
B C D G H
K N O Q S
T U V W Z
要加密的讯息为 Hide the gold in the tree stump
HI 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
Polybius
又称为棋盘密码,将给定的明文加密为两两组合的数字
特征
- 密文的长度是明文的两倍
- 密文通常只由五种不同字符组成
密码表
| 1 | 2 | 3 | 4 | 5 | |
|---|---|---|---|---|---|
| 1 | A | B | C | D | E |
| 2 | F | G | H | I/J | K |
| 3 | L | M | N | O | P |
| 4 | Q | R | S | T | U |
| 5 | V | W | X | Y | Z |
明文 HELLO,加密后就是 23 15 31 31 34。
另一种密码表
| A | D | F | G | X | |
|---|---|---|---|---|---|
| A | b | t | a | l | p |
| D | d | h | o | z | k |
| F | q | f | v | s | n |
| G | g | j | c | u | x |
| X | m | r | e | w | y |
这种密码表也称为ADFGX密码
结合了polybius密码和置换密码的双重加密方案
HELLO,使用这个表格加密,就是 DD XF AG AG DF。
Vigenere维吉尼亚密码
使用一系列凯撒密码组成密码字母表的加密算法
密码表
特征
加密过程
- 处理密钥。将密钥填充至和明文一样长。
- 明文和密钥形成字母对,查询表格。
例子
明文:come greatwall
密钥:crypto
首先,对密钥进行填充使其长度与明文长度一样。
| 明文 | c | o | m | e | g | r | e | a | t | w | a | l | l |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 密钥 | c | r | y | p | t | o | c | r | y | p | t | o | c |
其次,查表得密文
明文:come greatwall
密钥:crypto
密文:efkt zferrltzn
Nihilist
又称为关键字密码:明文 + 关键字 = 密文。
例子
关键字:helloword
利用密钥构建棋盘矩阵(类似 Polybius)
| 1 | 2 | 3 | 4 | 5 | |
|---|---|---|---|---|---|
| 1 | h | e | l | o | w |
| 2 | r | d | a | b | c |
| 3 | f | g | i / j | k | m |
| 4 | n | p | q | s | t |
| 5 | u | v | x | y | z |
特征
- 纯数字
- 只包含 1 到 5
- 密文长度偶数。
HIll
希尔密码(Hill)使用每个字母在字母表中的顺序作为其对应的数字,即 A=0,B=1,C=2 等,然后将明文转化为 n 维向量,跟一个 n × n 的矩阵相乘,再将得出的结果模 26。
注意用作加密的矩阵(即密匙)在 Z^{26}_{n} 必须是可逆的,否则就不可能解码。只有矩阵的行列式和 26 互质,才是可逆的。
例子
明文:ACT
将明文化为矩阵。
假设密钥为:
加密过程为:
密文:POH
特征
- n * n的密钥矩阵代表n个一组进行加密
给出的密钥可能以行或列进行排列,但一定是完全平方数
AutokeyCipher
自动密钥密码。和维吉尼亚类似,但使用不同的方法生成密钥。
自动密钥密码主要有两种,关键词自动密钥密码和原文自动密钥密码。
其他类型加密
培根密码
二进制表示
| a | AAAAA | g | AABBA | n | ABBAA | t | BAABA |
|---|---|---|---|---|---|---|---|
| b | AAAAB | h | AABBB | o | ABBAB | u-v | BAABB |
| c | AAABA | i-j | ABAAA | p | ABBBA | w | BABAA |
| d | AAABB | k | ABAAB | q | ABBBB | x | BABAB |
| e | AABAA | l | ABABA | r | BAAAA | y | BABBA |
| f | AABAB | m | ABABB | s | BAAAB | z | BABBB |
特征
- 只有两种字符
- 每一段的长度为 5
- 加密内容会有特殊的字体之分,亦或者大小写之分。
栅栏密码
栅栏密码把要加密的明文分成 N 个一组,然后把每组的第 1 个字连起来,形成一段无规律的话。
例子
明文:THERE IS A CIPHER
去掉空格:THEREISACIPHER
分成两栏:TH ER EI SA CI PH ER
先取出第一个字母,再取出第二个字母:TEESCPE
HRIAIHR
连起来:TEESCPEHRIAIHR
曲路密码
曲路密码(Curve Cipher)是一种换位密码,需要事先双方约定密钥(也就是曲路路径)。
例子
明文:The quick brown fox jumps over the lazy dog
填入 5 行 7 列表(事先约定填充的行列数)

加密的回路线(事先约定填充的行列数)

密文:gesfc inpho dtmwu qoury zejre hbxva lookT
列移位加密
原理
- 将明文填入 5 行 7 列表(事先约定填充的行列数,如果明文不能填充完表格可以约定使用某个字母进行填充)
- 将密钥在字母表中的出现的先后顺序进行编号。编号作为在密文中的先后顺序。
例子


密文: qoury inpho Tkool hbxva uwmtd cfseg erjez
01248密码
又称为云影密码,使用0、1、2、4、8五个数字。其中0用来表示间隔,其他数字以加法可以表示出 如:28=10, 124=7, 18=9,再用 1->26表示A->Z
特征
只有0 1 2 4 8
例子
8842101220480224404014224202480122
| 内容 | 数字 | 字符 |
|---|---|---|
| 88421 | 8+8+4+2+1=23 | W |
| 122 | 1+2+2=5 | E |
| 48 | 4+8=12 | L |
| 2244 | 2+2+4+4=12 | L |
| 4 | 4 | D |
| 142242 | 1+4+2+2+4+2=15 | O |
| 248 | 2+4+8=14 | N |
| 122 | 1+2+2=5 | E |
JSFuck
BrainFuck
猪圈密码
对照表如下

我们举一个例子,如明文为 X marks the spot ,那么密文如下

舞动的小人密码
每一个跳舞的小人实际上对应的是英文二十六个字母中的一个,而小人手中的旗子则表明该字母是单词的最后一个字母,如果仅仅是一个单词而不是句子,或者是句子中最后的一个单词,则单词中最后一个字母不必举旗。

键盘密码
手机键盘密码
用两位数字来表示字母。第一个数字是指包含在哪个九键中,第二个数字是指字母集合中在第几个。

电脑键盘加密
棋盘方阵

电脑键盘坐标

电脑键盘QWE


浙公网安备 33010602011771号