虚无加密法加密与解密
明文
密文
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | A | B | C | D | E |
2 | F | G | H | I | K |
3 | L | M | N | O | P |
4 | Q | R | S | T | U |
5 | V | W | X | Y | Z |
什么是虚无加密法?
虚无加密法(Nihilist Cipher)是一种基于数字和字母的加密方式,其核心原理是将字母通过方阵转化为数字,然后利用秘钥对数字进行加密。该加密方法与波利比奥斯方阵不同,加入了秘钥的复杂性,使得加密和解密过程更加安全。通过该方法,即使攻击者获得了加密后的文本,只凭密文无法轻易恢复原文。
虚无加密法如何加密?
- 确定字母表、行数、列数、秘钥:
- 字母表:选择字母表,如英语字母表“ABCDEFGHIJKLMNOPQRSTUVWXYZ”,或其他语言的字母表。
- 行数与列数:根据字母表的长度选择合适的行数和列数;通常,如果字母表有26个字母,则选择 5 行 5 列的方阵。
- 秘钥:选择一个字母表中的字母作为秘钥(可以是单词或字符串),秘钥的字母将被转换为方阵中的行列坐标。
- 生成方阵: 根据字母表、行数和列数,自动生成对应的方阵。
- 将明文转换为数字: 将明文中的每个字母根据方阵转换为对应的行列数字。
- 将秘钥转换为数字: 将秘钥中的每个字母根据方阵转换为行列坐标。
- 应用秘钥对数字进行加法运算: 将明文中得到的数字与秘钥中的数字进行加法运算。由于秘钥可能短于明文,需要重复使用秘钥以匹配明文的长度。
- 输出密文:将数字对合并为最终密文。
示例
假设要加密明文“HELLO”,秘钥是“KEY”,字母表是“ABCDEFGHIJKLMNOPQRSTUVWXYZ”,生成 5行5列的方阵:
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”转为数字坐标:
- H -> (2, 3)
- E -> (1, 5)
- L -> (3, 1)
- L -> (3, 1)
- O -> (3, 4)
将秘钥“KEY”转为数字对:
- K -> (2, 5)
- E -> (1, 5)
- Y -> (5, 4)
合并明文“HELLO”与秘钥“KEY”的数字对:
Hello | (2, 3) | (1, 5) | (3, 1) | (3, 1) | (3, 4) |
---|---|---|---|---|---|
Key | (2, 5) | (1, 5) | (5, 4) | (2, 5) | (1, 5) |
密文 | (4, 8) | (2, 10) | (8, 5) | (5, 6) | (4, 9) |
所以,最终得到的加密后的数字对:48 30 85 56 49。
虚无加密法如何解密?
解密的步骤与加密过程类似,但需要进行逆向操作(行列相减),如上面的密文:48 30 85 56 49,解密步骤如下:
密文 | (4, 8) | (3, 0) | (8, 5) | (5, 6) | (4, 9) |
---|---|---|---|---|---|
Key | (2, 5) | (1, 5) | (5, 4) | (2, 5) | (1, 5) |
明文 | (2, 3) | (1, 5) | (3, 1) | (3, 1) | (3, 4) |
根据这些数字对,还原为原始字母:
- (2, 3) → H
- (1, 5) → E
- (3, 1) → L
- (3, 1) → L
- (3, 4) → O
得到解密后的明文:HELLO。
如何使用虚无加密法工具?
- 选择字母表,设置行数和列数:在工具中,您可以选择字母表(支持多语言),设置行数和列数,默认是 5 行 5 列。
- 定义秘钥和分隔符:设置加密的秘钥,可以是任何由字母组成的字符串;分隔符默认以空格隔开。
- 输入明文或密文:根据需要在相应输入框内输入明文或密文,工具会根据设定的参数自动完成加密或解密,并最终显示。