python维吉尼亚密码字母改成数字版
时间: 2023-12-21 16:26:18 浏览: 59
Python实现维吉尼亚密码(加解密)
以下是将维吉尼亚密码中的字母转换为数字的Python代码:
```python
def letter_to_number(letter):
"""
将大写字母转换为数字,A对应0,B对应1,以此类推。
"""
return ord(letter) - ord('A')
def number_to_letter(number):
"""
将数字转换为大写字母,0对应A,1对应B,以此类推。
"""
return chr(number + ord('A'))
def encrypt_vigenere(plaintext, key):
"""
维吉尼亚加密,使用数字代替字母。
"""
ciphertext = ""
key_index = 0
for letter in plaintext:
if letter.isalpha():
number = (letter_to_number(letter) + letter_to_number(key[key_index])) % 26
ciphertext += number_to_letter(number)
key_index = (key_index + 1) % len(key)
else:
ciphertext += letter
return ciphertext
def decrypt_vigenere(ciphertext, key):
"""
维吉尼亚解密,使用数字代替字母。
"""
plaintext = ""
key_index = 0
for letter in ciphertext:
if letter.isalpha():
number = (letter_to_number(letter) - letter_to_number(key[key_index])) % 26
plaintext += number_to_letter(number)
key_index = (key_index + 1) % len(key)
else:
plaintext += letter
return plaintext
```
使用示例:
```python
plaintext = "HELLO WORLD"
key = "KEY"
ciphertext = encrypt_vigenere(plaintext, key)
print(ciphertext) # "KFAOS XDPSE"
plaintext = decrypt_vigenere(ciphertext, key)
print(plaintext) # "HELLO WORLD"
```
请注意,此代码仅适用于大写字母。如果要支持小写字母,需要进行一些修改。
阅读全文