python 维吉尼亚密码的代码
时间: 2024-09-13 14:14:27 浏览: 48
Python实现维吉尼亚密码(加解密)
维吉尼亚密码(Vigenère cipher)是一种使用一系列不同的凯撒密码进行加密的方法,这些密码按字母表中的顺序循环应用。在Python中实现维吉尼亚密码,我们可以创建一个函数来加密文本,同时也需要一个函数来解密文本。以下是一个简单的Python实现:
```python
# 维吉尼亚密码表
VIGENERE_TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def vigenere_encrypt(plaintext, key):
ciphertext = ''
key_index = 0
for char in plaintext:
if char.isalpha():
key_char = key[key_index]
# 转换成大写字母
char = char.upper()
key_char = key_char.upper()
# 加密并保持字母在大写字母范围内
new_char = VIGENERE_TABLE[(VIGENERE_TABLE.index(char) + VIGENERE_TABLE.index(key_char)) % 26]
ciphertext += new_char
key_index += 1
else:
ciphertext += char
return ciphertext
def vigenere_decrypt(ciphertext, key):
plaintext = ''
key_index = 0
for char in ciphertext:
if char.isalpha():
key_char = key[key_index]
# 转换成大写字母
char = char.upper()
key_char = key_char.upper()
# 解密并保持字母在大写字母范围内
new_char = VIGENERE_TABLE[(VIGENERE_TABLE.index(char) - VIGENERE_TABLE.index(key_char)) % 26]
plaintext += new_char
key_index += 1
else:
plaintext += char
return plaintext
# 使用示例
key = 'VIGENERECIPHER'
plaintext = 'HELLOWORLD'
ciphertext = vigenere_encrypt(plaintext, key)
print('加密后的文本:', ciphertext)
decrypted_text = vigenere_decrypt(ciphertext, key)
print('解密后的文本:', decrypted_text)
```
这个例子中,我们首先定义了一个密码表`VIGENERE_TABLE`,然后定义了两个函数`vigenere_encrypt`和`vigenere_decrypt`来分别加密和解密文本。使用时,只需提供明文和密钥即可。
请注意,这个实现假设明文和密钥都只包含大写字母,并且密钥会在整个加密过程中循环使用。在实际使用中,可能需要对输入进行预处理,以支持小写字母和其他字符。
阅读全文