使用string.printable构建凯撒加密算法,对多行文本字串进行加密和解密,使K项改为逆向的
时间: 2024-12-02 16:16:56 浏览: 16
凯撒加密(Caesar Cipher),也称为移位密码,是一种简单的替换式加密方法。在字符串处理中,我们可以利用Python的`string.printable`来包含所有可打印字符,包括字母、数字和一些标点符号。要通过凯撒加密算法对多行文本进行加密和解密,并将K项改为逆向操作(例如,原本每增加K,现在变成减少K),你可以编写如下的代码:
```python
import string
def caesar_cipher_encrypt(text, shift):
encrypted_text = ""
for char in text:
if char.isalpha():
# 对大写字母和小写字母分别处理
shifted_char = chr(((ord(char.lower()) - ord('a') + shift) % 26) + ord('a')) if char.islower() else chr(((ord(char.upper()) - ord('A') + shift) % 26) + ord('A'))
elif char in string.printable and not char.isspace():
shifted_char = char # 其他非字母字符保持不变
encrypted_text += shifted_char
return encrypted_text
def caesar_cipher_decrypt(encrypted_text, shift):
return caesar_cipher_encrypt(encrypted_text, -shift) # 解密时反向移动
# 示例
text = """Hello, World!\nThis is a test."""
shift = 3
encrypted = caesar_cipher_encrypt(text, shift)
decrypted = caesar_cipher_decrypt(encrypted, shift)
print("原始文本:", text)
print("加密后的文本:", encrypted)
print("解密后的文本:", decrypted)
```
在这个例子中,`caesar_cipher_encrypt`函数会接收一段文本和一个偏移值(在这里是K项),然后按照凯撒加密规则对每个字符进行移动。`caesar_cipher_decrypt`函数则是对加密后的文本进行逆向的移位。
阅读全文