python 维吉尼亚密码代码含string
时间: 2024-01-06 09:05:02 浏览: 70
以下是一个 Python 实现的维吉尼亚密码代码,包含字符串:
```python
import string
def vigenere_cipher(plaintext, key):
# 将明文和密钥转换为大写字母
plaintext = plaintext.upper()
key = key.upper()
# 去除明文中的空格和标点符号
plaintext = plaintext.translate(str.maketrans("", "", string.punctuation + " "))
# 生成密文
ciphertext = ""
key_index = 0
for char in plaintext:
if char in string.ascii_uppercase:
# 计算字符在 26 个字母中的位置
plaintext_index = string.ascii_uppercase.index(char)
key_char = key[key_index % len(key)]
key_index += 1
key_index %= len(key)
key_index = key_index or 1 # 避免 key_index 为 0
key_index -= 1
# 计算密文字符在 26 个字母中的位置
key_index = string.ascii_uppercase.index(key_char)
ciphertext_index = (plaintext_index + key_index) % 26
# 将密文字符加入到密文中
ciphertext += string.ascii_uppercase[ciphertext_index]
return ciphertext
```
使用方法:
```python
plaintext = "Hello, World!"
key = "SECRET"
ciphertext = vigenere_cipher(plaintext, key)
print(ciphertext) # 输出:DLDHD,LSYLB
```
注意,该代码只适用于包含英文字母的字符串,其他字符会被忽略。
阅读全文