维吉尼亚密码

17 Mar 2025 | 4 分钟阅读

引言

维吉尼亚密码是一种用于加密和解密文本的算法。维吉尼亚密码是一种加密字母文本的算法,它使用一系列交织的凯撒密码。它基于一个关键词的字母。它是一种多字母替换密码的例子。这种算法易于理解和实现。这种算法最早在 1553 年由 Giovan Battista Bellaso 描述。它使用维吉尼亚表或维吉尼亚方阵来加密和解密文本。维吉尼亚表也被称为 tabula recta。

两种方法执行维吉尼亚密码。

方法 1

当给定维吉尼亚表时,使用维吉尼亚表(26 * 26 矩阵)进行加密和解密。

Vigenere Cipher

例如:明文是 "JAVATPOINT",密钥是 "BEST"。

为了生成一个新密钥,循环重复给定的密钥,只要明文的长度不等于新密钥。

Vigenere Cipher

加密

明文的第一个字母与密钥的第一个字母组合。明文的列 "J" 和密钥的行 "B" 与维吉尼亚表中的字母 "K" 相交,因此密文的第一个字母是 "K"。

类似地,明文的第二个字母与密钥的第二个字母组合。明文的列 "A" 和密钥的行 "E" 与维吉尼亚表中的字母 "E" 相交,因此密文的第二个字母是 "E"。

这个过程持续进行,直到明文结束。

密文 = KENTUTGBOX

解密

解密是通过维吉尼亚表中密钥的行完成的。首先,选择密钥字母的行,在行中找到密文字母的位置,然后选择相应密文的列标签作为明文。

Vigenere Cipher

例如,在密钥的行是 "B",密文是 "K",并且这个密文字母出现在列 "J" 中,这意味着第一个明文字母是 "J"。

接下来,在密钥的行是 "E",密文是 "E",并且这个密文字母出现在列 "A" 中,这意味着第二个明文字母是 "A"。

这个过程持续进行,直到密文结束。

明文 = JAVATPOINT

方法 2

当未给定维吉尼亚表时,在这种方法中,加密和解密通过维吉尼亚代数公式完成(将字母 (A-Z) 转换为数字 (0-25))。

加密公式为:

Ei = (Pi + Ki) mod 26

解密公式为:

Di = (Ei - Ki) mod 26

如果任何情况下 (Di) 的值变为负数 (-ve),在这种情况下,我们将在负值中加上 26。

其中,

E 表示加密。

D 表示解密。

P 表示明文。

K 表示密钥。

注意:“i”表示字母的第 i 个数字的偏移量,如下表所示。

Vigenere Cipher

例如:明文是 "JAVATPOINT",密钥是 "BEST"。

加密: Ei = (Pi + Ki) mod 26

明文JAVATPOINT
明文值 (P)09002100191514081319
BESTBESTBE
密钥值 (K)01041819010418190104
密文值 (E)10041319201906011423
密文KENTUTGBOX

解密: Di = (Ei - Ki) mod 26

如果任何情况下 (Di) 的值变为负数 (-ve),在这种情况下,我们将在负值中加上 26。例如,密文的第三个字母;

N = 13 且 S = 18

Di = (Ei - Ki) mod 26

Di = (13 - 18) mod 26

Di = -5 mod 26

Di = (-5 + 26) mod 26

Di = 21

密文KENTUTGBOX
密文值 (E)10041319201906011423
BESTBESTBE
密钥值 (K)01041819010418190104
明文值 (P)09002100191514081319
明文JAVATPOINT

程序

C 语言

输出

I AM INDIAN
Encrypted: SDERFGTUJ
Decrypted: IAMINDIAN

下一主题#