虛無加密法加密與解密
明文
密文
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 列。
- 定義祕鑰和分隔符:設置加密的祕鑰,可以是任何由字母組成的字串;分隔符默認以空格隔開。
- 輸入明文或密文:根據需要在相應輸入框內輸入明文或密文,工具會根據設定的參數自動完成加密或解密,並最終顯示。