4、设计一个加密解密程序。要求如下: (1)加密的过程是先将原字符串逆序,然后将每个字符转换为其之前的第5个字符。 (2)解密算法和加密算法相反。 (3)检验功能:输入一个字符串,要求只能输入字符和数字,输出其加密后的字符,并对加密后的密文进行解密。
时间: 2024-10-13 07:18:24 浏览: 39
AES.rar_AES 任意_AES任意字符串_字符串aes加密_字符串加密
5星 · 资源好评率100%
设计一个简单的加密解密程序可以分为以下几个步骤:
**加密过程:**
1. **接收输入:**首先,获取用户输入的原始字符串,只允许包含字符和数字。
2. **字符串逆序:**将输入的字符串按照字符顺序倒置。
3. **字符移位:**对于字符串中的每一个字符(包括ASCII码),取出它的ASCII值,然后减去5(如果是字母,则循环处理,如 'z' 变为 'a',而 'a' - 5 又变为 'f')。如果得到的结果不是字母或数字,保持不变。
4. **生成密文:**将移位后的字符组成新的字符串作为密文。
**解密过程:**
1. **接收密文:**用户输入加密后的字符串。
2. **字符串逆序:**同样按字符顺序反转密文。
3. **字符恢复:**对于密文中的每个字符,取出其ASCII值,然后加上5(注意同上所述的字符循环处理规则)。
4. **还原明文:**将恢复后的字符重新组合成原始字符串。
**检验功能:**
1. **输入验证:**检查输入的字符是否全部是字符和数字,如果不是则提示用户错误。
2. **加密演示:**当用户输入明文时,直接显示经过加密后的密文。
3. **解密并验证:**接受用户输入的密文,解密后输出解密结果,并确认是否与原始输入匹配。
```python
def encrypt(text):
reversed_text = text[::-1]
encrypted = ""
for char in reversed_text:
if char.isdigit() or char.isalpha():
encrypted += chr((ord(char) - 5) % 26 + ord('A'))
else:
encrypted += char
return encrypted
def decrypt(encrypted_text):
decrypted = encrypt(encrypted_text)[::-1] # 解密就等于加密的逆过程
return decrypted
def validate_input(input_str):
return all(c.isdigit() or c.isalnum() for c in input_str)
def main():
original_text = input("请输入原始字符串(只包含字符和数字):")
if validate_input(original_text):
encrypted = encrypt(original_text)
print(f"加密后的密文:{encrypted}")
decrypted = decrypt(encrypted)
print(f"解密后的明文:{decrypted}")
else:
print("输入错误,请输入仅包含字符和数字的字符串。")
if __name__ == "__main__":
main()
```
阅读全文