python:某个公司采用公用电话传递4位整数数据,该数据在传递过程中是加密的。加密规则如下:每位数字都加上5,然后用得到的和除以10的余数代替该数字,再将第1位和第4位交换,第2位和第3位交换。编写程序实现上述功能。
时间: 2024-09-18 11:16:46 浏览: 42
Python中可以使用列表推导式和切片操作来实现这个加密解密的过程。首先,我们将创建一个函数`encrypt`用于加密4位整数,然后另一个函数`decrypt`用于解密。以下是具体的代码实现:
```python
def encrypt(num):
# 将四位数字拆分成列表,并对每个数字加5取余
encrypted = [((d + 5) % 10) for d in str(num)]
# 交换位置
encrypted[0], encrypted[3] = encrypted[3], encrypted[0]
encrypted[1], encrypted[2] = encrypted[2], encrypted[1]
# 转回四位数
return int(''.join(map(str, encrypted)))
def decrypt(encrypted_num):
# 从加密后的数字恢复原顺序
decrypted = list(str(encrypted_num))
decrypted[0], decrypted[3] = decrypted[3], decrypted[0]
decrypted[1], decrypted[2] = decrypted[2], decrypted[1]
# 按照加密规则还原每位数字
original_digits = [(d - 5) % 10 for d in decrypted]
# 重新组合成四位数
return int(''.join(map(str, original_digits)))
# 示例
test_num = 1234
encrypted = encrypt(test_num)
print(f"加密前: {test_num}, 加密后: {encrypted}")
decrypted = decrypt(encrypted)
print(f"解密后: {decrypted}")
```
在这个例子中,你可以用`encrypt`函数加密任意四位整数,然后用`decrypt`函数解密它。
阅读全文