vigenere密码用Python实现加解密
时间: 2023-11-05 07:13:20 浏览: 243
vigenere密码加解密
4星 · 用户满意度95%
Vigenere密码是一种古老的加密算法,它使用一个关键字来对明文进行加密,因此也被称为多表密码。下面是使用 Python 实现 Vigenere 加解密的代码:
```python
def vigenere_encrypt(plaintext, key):
"""
使用 Vigenere 密码加密明文
:param plaintext: 明文
:param key: 密钥
:return: 密文
"""
ciphertext = ""
key_len = len(key)
for i in range(len(plaintext)):
shift = ord(key[i % key_len]) - ord("a")
ciphertext += chr((ord(plaintext[i]) - ord("a") + shift) % 26 + ord("a"))
return ciphertext
def vigenere_decrypt(ciphertext, key):
"""
使用 Vigenere 密码解密密文
:param ciphertext: 密文
:param key: 密钥
:return: 明文
"""
plaintext = ""
key_len = len(key)
for i in range(len(ciphertext)):
shift = ord(key[i % key_len]) - ord("a")
plaintext += chr((ord(ciphertext[i]) - ord("a") - shift) % 26 + ord("a"))
return plaintext
```
使用示例:
```python
plaintext = "hello"
key = "world"
ciphertext = vigenere_encrypt(plaintext, key)
print(ciphertext) # 输出:dahit
decrypted_plaintext = vigenere_decrypt(ciphertext, key)
print(decrypted_plaintext) # 输出:hello
```
在上述代码中,`vigenere_encrypt` 函数接受明文和密钥作为输入,并返回加密后的密文。`vigenere_decrypt` 函数接受密文和密钥作为输入,并返回解密后的明文。在这两个函数中,我们使用了 `ord` 函数将字符转换成 ASCII 码,使用了 `chr` 函数将 ASCII 码转换成字符,使用了 `%` 运算符实现循环移位。
阅读全文