用python编写维吉尼亚密码加解密
时间: 2023-07-27 11:29:18 浏览: 63
好的,以下是用 Python 编写维吉尼亚密码加解密的代码:
```python
def vigenere_cipher(plain_text, key, mode):
"""
:param plain_text: 明文
:param key: 密钥
:param mode: 模式,加密或解密
:return: 密文或明文
"""
cipher_text = ''
key_len = len(key)
for i in range(len(plain_text)):
# 计算密钥的偏移量
key_offset = ord(key[i % key_len]) - ord('a')
if mode == 'encrypt':
# 加密
cipher_char = chr((ord(plain_text[i]) - ord('a') + key_offset) % 26 + ord('a'))
elif mode == 'decrypt':
# 解密
cipher_char = chr((ord(plain_text[i]) - ord('a') - key_offset + 26) % 26 + ord('a'))
else:
# 模式错误
raise ValueError('Invalid mode: ' + mode)
cipher_text += cipher_char
return cipher_text
```
使用方法:
```python
# 加密
cipher_text = vigenere_cipher('hello', 'world', 'encrypt')
print(cipher_text) # 输出:xvtrj
# 解密
plain_text = vigenere_cipher(cipher_text, 'world', 'decrypt')
print(plain_text) # 输出:hello
```
注意:该代码仅支持小写字母的加解密。如果需要支持大写字母、数字、符号等,则需要对代码进行修改。
阅读全文