📜  密码学中的 Vernam 密码

📅  最后修改于: 2022-05-13 01:57:02.873000             🧑  作者: Mango

密码学中的 Vernam 密码

Vernam Cipher是一种加密字母文本的方法。它是将纯文本转换为密文的转置技术之一。在这种机制中,我们为纯文本的每个字符分配一个数字,例如 (a = 0, b = 1, c = 2, ... z = 25)。

取钥匙方法:
在 Vernam 密码算法中,我们使用一个密钥来加密明文,其长度应该等于明文的长度。

加密演算法:

  1. 按字母顺序为纯文本的每个字符和键分配一个数字。
  2. 添加数字(对应的纯文本字符数和关键字符数)。
  3. 如果添加的数字大于 26,则从 26 中减去该数字,如果不是,则保留它。

例子:

Plain-Text: RAMSWARUPK
Key: RANCHOBABA 

现在根据我们的加密算法,我们为明文和密钥的每个字符分配一个数字。

PT:   R  A  M   S   W   A  R   U   P   K
NO:   17 0  12  18  22  0  17  20  15  10

KEY:  R   A  N   C  H  O   B  A  B  A  
NO:   17  0  13  2  7  14  1  0  1  0 

现在将Plain-Text和Key的个数相加,在做加减运算(如果需要)之后,我们将得到对应的Cipher-Text字符个数。

CT-NO: 34  0  25  20  29  14  18  20  16  10 

在这种情况下,有两个数字大于 26,因此我们必须从中减去 26,在应用减法运算后,新的密文字符数如下:

CT-NO:  8  0  25   20   3   14   18   20   16   10 

新密文是在从数字中得到对应的字符之后。

CIPHER-TEXT: I  A  Z  U  D  O  S  U  Q  K 

笔记:
对于解密应用加密的正好相反的过程。

具体实现请参考这篇文章:Vernam Cipher or One Time Pad Algorithm 的实现