多表替换加密
## 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`: 1. 若`p1` `p2`在同一行,对应密文`c1` `c2`分别是紧靠`p1` `p2` 右端的字母。其中第一列被看做是最后一列的右方。 2. 若`p1` `p2`在同一列,对应密文`c1` `c2`分别是紧靠`p1` `p2` 下方的字母。其中第一行被看做是最后一行的下方。 3. 若`p1` `p2`不在同一行,不在同一列,则`c1` `c2`是由`p1` `p2`确定的矩形的其他两角的字母(横向对应或纵向对应) ### 解密步骤 1. 根据密钥编制密码表 2. 将密文每两个字母组成一对`c1` `c2` 3. 若`c1` `c2`在同一行,对应明文`p1` `p2`分别是紧靠`c1` `c2` 左端的字母。其中最后一列被看做是第一列的左方。 4. 若`c1` `c2`在同一列,对应明文`p1` `p2`分别是紧靠`c1` `c2` 上方的字母。其中最后一行被看做是第一行的上方。 5. 若`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)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。 ### 加密过程 1. 取一个密钥,重复这个密钥使其与密文一样长度 2. 将密钥与明文一一对应 3. 每个密钥字符与明文字符在表上对应一个密文字符 ### 密码表 ![](https://blog.coolcooltomato.com/uploads/article/vigenere.jpg)
创建时间:2023-07-26
|
最后修改:2023-12-27
|
©允许规范转载
酷酷番茄
首页
文章
友链