Playfair
Playfair密码依据一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。
加密步骤
编制密码表
确定一个密钥,将后出现的重复字母去掉,按行或列的顺序写入5*5的密码表中,剩下的字母按顺序写入密码表中,例如密钥为LEAFBACK,去重后为LEAFBCK,得到密码表如下:
L | E | A | F | B |
---|---|---|---|---|
C | K | D | G | H |
I/J | M | N | O | P |
Q | R | S | T | U |
V | W | X | Y | Z |
整理明文
将明文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母X(或者Q)。
编写密文
对于每一对字母p1p2:
- 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。
- 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
- 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(横向对应或纵向对应)
解密步骤
- 根据密钥编制密码表
- 将密文每两个字母组成一对c1c2
- 若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2 左端的字母。其中最后一列被看做是第一列的左方。
- 若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2 上方的字母。其中最后一行被看做是第一行的上方。
- 若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母。
Polybius
Polybius 密码又称为棋盘密码,其一般是将给定的明文加密为两两组合的数字。 例如LEAF加密后为:31 15 11 21
密码表
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 |
ADFGX密码表
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 |
Vigenere
维吉尼亚密码(Vigenere)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。
加密过程
- 取一个密钥,重复这个密钥使其与密文一样长度
- 将密钥与明文一一对应
- 每个密钥字符与明文字符在表上对应一个密文字符