工作原理
本质上,Vigenère 密码是几个凯撒密码,其移位值取决于密钥。它可以通过使用Vigenère 表格简单地手动计算。在代码中,可以使用模算术来实现。
编码
编码时,我们首先将每个字母转换为0到25之间的数字,其中A是0,Z是25。如果密钥比消息短,就将其重复直到它们长度相同,例如,如果消息是cryptography,密钥是secretkey:
msg = cryptography
key = secretkeysec
输出O的第i个字符可以使用以下公式从消息M和密钥K计算得出:
O[i] = (M[i] + K[i]) mod 26
解码
将输出O解码为消息M,已知密钥K,同样简单:
M[i] = (O[i] - K[i]) mod 26