4、设计一个加密解密程序。要求如下:(1) 加密的过程是先将原字符串逆序, 然后将每个字符转换为其之前的第5个字符。(2) 解密算法和加密算法相反。(3) 检验功能: 输入一个字符串, 要求只能输入字符和数字, 输出其加密后的字符, 并对加密后的密文进行解密。
时间: 2024-10-12 16:04:37 浏览: 30
设计一个简单的加密解密程序可以分为以下几个步骤:
1. **加密函数** (Encrypt):
- 接收一个字符串作为输入。
- 首先,对输入字符串进行逆序操作,可以遍历字符串并将字符添加到一个新的列表中,然后反转这个列表得到逆序字符串。
- 然后,对于逆序字符串中的每个字符,找到它之前(即索引减1)的第5个字符。这通常需要创建一个字符映射表,存储每个字符及其对应的加密位置,或者通过ASCII码值进行计算。
- 将处理后的字符替换掉原字符,生成加密后的字符串。
2. **解密函数** (Decrypt):
- 接收加密后的字符串作为输入。
- 使用相同的字符映射表或ASCII计算规则,找到每个字符的原始位置(即从加密位置回退5个字符),恢复原始字符顺序。
- 最终返回解密后的字符串。
3. **检验功能**:
- 创建一个输入验证部分,检查用户输入是否只包含字符和数字。如果不是,提示用户输入无效并要求重新输入。
- 对于有效的输入,先进行加密操作,然后输出加密后的结果。
- 再对加密后的字符串进行解密,并显示解密后的结果以确认程序的功能。
以下是一个基本的Python实现示例:
```python
def encrypt(text):
encrypted_text = list(text)[::-1]
char_map = {chr(i): chr((i - 97 - 5) % 26 + 97) for i in range(ord('a'), ord('z')+1)} # ASCII 'a'-'z'
encrypted_text = [char_map.get(char, char) for char in encrypted_text]
return ''.join(encrypted_text)
def decrypt(encrypted_text):
return encrypt(encrypted_text) # 因为加密和解密是相反的操作
def validate_input(input_str):
if not input_str.isalnum():
print("输入包含无效字符,请输入纯字符和数字。")
return False
return True
def main():
user_input = input("请输入要加密的字符串:")
if validate_input(user_input):
encrypted = encrypt(user_input)
print(f"加密后的字符串:{encrypted}")
decrypted = decrypt(encrypted)
print(f"解密后的字符串:{decrypted}")
if __name__ == "__main__":
main()
```
阅读全文