python中设计一个加密解密程序。要求如下: (1)加密的过程是先将原字符串逆序,然后将每个字符转换为其之前的第5个 字符。 (2)解密算法和加密算法相反。 (3)检验功能:输入一个字符串,要求只能输入字符和数字,输出其加密后的 字符,并对加密后的密文进行解密。
时间: 2024-10-11 16:16:05 浏览: 44
在Python中,我们可以创建一个简单的加密解密程序来满足上述要求。我们将定义两个函数,`encrypt` 和 `decrypt` 分别用于加密和解密操作,以及一个辅助函数 `is_valid_input` 来检查输入是否只包含字母和数字。
```python
def is_valid_input(input_string):
"""
检查输入字符串是否只包含字符和数字
"""
return all(c.isalnum() for c in input_string)
def shift_encrypt(char, shift=5):
"""
将字符向后移动5位
"""
return chr(((ord(char) - ord('a') + shift) % 26) + ord('a'))
def encrypt(text):
"""
加密过程:逆序字符串并应用字符移动
"""
if not is_valid_input(text):
raise ValueError("Invalid input! Only characters and numbers are allowed.")
return ''.join(shift_encrypt(char, -5) for char in reversed(text))
def decrypt(text):
"""
解密过程:逆向加密过程的操作
"""
return encrypt(text)[::-1] # 反转加密后的字符串
# 示例
input_str = "Hello123"
encrypted_text = encrypt(input_str)
print(f"Encrypted text: {encrypted_text}")
try:
decrypted_text = decrypt(encrypted_text)
except ValueError as e:
print(e)
else:
print(f"Decrypted text: {decrypted_text}")
```
在这个程序中,我们首先检查输入是否有效,然后执行加密步骤,接着尝试解密。如果输入包含非字母和数字字符,我们会抛出错误。你可以通过运行这个程序来测试加密和解密功能。如果你需要更多关于如何使用此程序的信息,可以问我:
阅读全文