用python写一个vigenere cipher算法
时间: 2024-02-18 09:59:43 浏览: 73
下面是用 Python 实现维吉尼亚密码算法的代码:
```python
def vigenere_cipher(text, key, mode):
"""
:param text: 明文或密文
:param key: 密钥
:param mode: 模式,加密为 'encrypt',解密为 'decrypt'
:return: 加密或解密后的结果
"""
key_len = len(key)
key_int = [ord(i) for i in key.upper()] # 将密钥转成大写字母的 ASCII 码
result = []
for i in range(len(text)):
char_int = ord(text[i])
if char_int >= 65 and char_int <= 90: # 判断是否为大写字母
if mode == 'encrypt':
char_int = (char_int + key_int[i % key_len] - 130) % 26 + 65 # 加密
elif mode == 'decrypt':
char_int = (char_int - key_int[i % key_len] + 26) % 26 + 65 # 解密
result.append(chr(char_int))
return ''.join(result)
```
这个函数接收三个参数:明文或密文 `text`,密钥 `key`,以及模式 `mode`,加密为 `'encrypt'`,解密为 `'decrypt'`。函数返回加密或解密后的结果。
下面是一个样例:
```python
text = 'HELLO WORLD'
key = 'KEY'
encrypted_text = vigenere_cipher(text, key, 'encrypt')
print(encrypted_text) # 输出:KFAOS AELRW
decrypted_text = vigenere_cipher(encrypted_text, key, 'decrypt')
print(decrypted_text) # 输出:HELLO WORLD
```
注意,这个实现只支持大写字母,如果需要支持小写字母,需要做一些修改。
阅读全文