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)。
编写密文
对于每一对字母p1 p2:
- 若
p1p2在同一行,对应密文c1c2分别是紧靠p1p2右端的字母。其中第一列被看做是最后一列的右方。 - 若
p1p2在同一列,对应密文c1c2分别是紧靠p1p2下方的字母。其中第一行被看做是最后一行的下方。 - 若
p1p2不在同一行,不在同一列,则c1c2是由p1p2确定的矩形的其他两角的字母(横向对应或纵向对应)
解密步骤
- 根据密钥编制密码表
- 将密文每两个字母组成一对
c1c2 - 若
c1c2在同一行,对应明文p1p2分别是紧靠c1c2左端的字母。其中最后一列被看做是第一列的左方。 - 若
c1c2在同一列,对应明文p1p2分别是紧靠c1c2上方的字母。其中最后一行被看做是第一行的上方。 - 若
c1c2不在同一行,不在同一列,则p1p2是由c1c2确定的矩形的其他两角的字母。
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)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。
加密过程
- 取一个密钥,重复这个密钥使其与密文一样长度
- 将密钥与明文一一对应
- 每个密钥字符与明文字符在表上对应一个密文字符
密码表
