用python实现弗吉尼亚密码
时间: 2023-09-17 07:13:38 浏览: 46
好的,以下是使用Python实现维吉尼亚密码的代码:
```python
def vigenere_encrypt(plaintext, key):
"""
维吉尼亚加密算法实现
:param plaintext: 明文
:param key: 密钥
:return: 密文
"""
ciphertext = ""
for i in range(len(plaintext)):
p = plaintext[i]
k = key[i % len(key)]
c = chr((ord(p) + ord(k)) % 26 + ord('A'))
ciphertext += c
return ciphertext
def vigenere_decrypt(ciphertext, key):
"""
维吉尼亚解密算法实现
:param ciphertext: 密文
:param key: 密钥
:return: 明文
"""
plaintext = ""
for i in range(len(ciphertext)):
c = ciphertext[i]
k = key[i % len(key)]
p = chr((ord(c) - ord(k) + 26) % 26 + ord('A'))
plaintext += p
return plaintext
```
函数`vigenere_encrypt(plaintext, key)`接受明文`plaintext`和密钥`key`作为输入,返回加密后的密文。函数实现时,使用了循环来遍历明文,对于每一个明文字符,取出对应的密钥字符,计算出密文字符,并将其添加在密文字符串中。其中,明文和密钥字符都需要先转换为对应的ASCII码,计算完密文字符后再转换回字符。
函数`vigenere_decrypt(ciphertext, key)`接受密文`ciphertext`和密钥`key`作为输入,返回解密后的明文。函数实现时,也是使用循环来遍历密文,对于每一个密文字符,取出对应的密钥字符,计算出明文字符,并将其添加在明文字符串中。其中,密文和密钥字符都需要先转换为对应的ASCII码,计算完明文字符后再转换回字符。
需要注意的是,在实现中,我们默认维吉尼亚密码的明文和密钥只包含大写字母。如果需要支持小写字母、数字或其他字符,需要进行相应的修改。