维吉尼亚密码python实现
时间: 2023-07-30 12:05:15 浏览: 152
好的,以下是维吉尼亚密码的 Python 实现:
```python
import string
def vigenere_cipher(plaintext, key, mode):
"""
实现维吉尼亚密码加密和解密
:param plaintext: 明文
:param key: 密钥
:param mode: 模式,加密或解密
:return: 密文或明文
"""
alphabet = string.ascii_uppercase # 英文字母表
key_len = len(key)
key_as_int = [alphabet.index(k.upper()) for k in key] # 将密钥转换成数字
plaintext = plaintext.upper().replace(" ", "") # 将明文转换成大写并去除空格
plaintext_len = len(plaintext)
ciphertext = ""
for i in range(plaintext_len):
p = plaintext[i]
if p not in alphabet:
ciphertext += p
continue
k = key_as_int[i % key_len]
if mode == "encrypt":
c = (alphabet.index(p) + k) % 26
else:
c = (alphabet.index(p) - k) % 26
ciphertext += alphabet[c]
return ciphertext
```
以上代码实现了维吉尼亚密码的加密和解密,可以根据需要进行调用。
阅读全文