维吉尼亚密码python
时间: 2023-08-31 11:12:59 浏览: 42
可以使用以下代码来实现维吉尼亚密码的加密和解密:
```
def encrypt_vigenere(plaintext, key):
ciphertext = ""
key_len = len(key)
for i in range(len(plaintext)):
char = plaintext[i]
key_char = key[i % key_len]
char_code = ord(char) - 97
key_code = ord(key_char) - 97
ciphertext += chr(((char_code + key_code) % 26) + 97)
return ciphertext
def decrypt_vigenere(ciphertext, key):
plaintext = ""
key_len = len(key)
for i in range(len(ciphertext)):
char = ciphertext[i]
key_char = key[i % key_len]
char_code = ord(char) - 97
key_code = ord(key_char) - 97
plaintext += chr(((char_code - key_code + 26) % 26) + 97)
return plaintext
```
其中,`encrypt_vigenere` 函数用于加密明文,`decrypt_vigenere` 函数用于解密密文,`plaintext` 和 `ciphertext` 分别表示明文和密文,`key` 表示密码。
例如,如果要加密明文 "hello world",使用密码 "python",可以这样调用 `encrypt_vigenere` 函数:
```
plaintext = "hello world"
key = "python"
ciphertext = encrypt_vigenere(plaintext, key)
print(ciphertext)
```
输出结果为 "hnwsc ypwgd"。如果要解密密文,可以这样调用 `decrypt_vigenere` 函数:
```
ciphertext = "hnwsc ypwgd"
key = "python"
plaintext = decrypt_vigenere(ciphertext, key)
print(plaintext)
```
输出结果为 "hello world"。