python用表达式解密J Bn b Fhqk 加密规则:空格代码未变,前四个字母的代码加1,后四个字母的代码减1
时间: 2023-05-24 12:04:50 浏览: 82
假设待解密文本为encrypted_text:
```python
# 将字符串转换成列表
encrypted_list = encrypted_text.split()
# 遍历列表
for i in range(len(encrypted_list)):
# 将字符串拆分成前四个字母和后四个字母
first_four_letters = encrypted_list[i][:4]
last_four_letters = encrypted_list[i][4:]
# 对前四个字母的代码加1,后四个字母的代码减1
new_first_four_letters = "".join([chr(ord(letter)+1) for letter in first_four_letters])
new_last_four_letters = "".join([chr(ord(letter)-1) for letter in last_four_letters])
# 将加密后的结果合并成一个字符串
decrypted_word = new_first_four_letters + new_last_four_letters
# 将解密后的单词替换原来的加密单词
encrypted_list[i] = decrypted_word
# 将列表合并成字符串
decrypted_text = " ".join(encrypted_list)
```
相关问题
python用表达式解密J Bn b Fhqk 加密规则:空格代码未变,前四个字母的代码加1,后四个字母的代码减1 解密规则:空格代码未变,前4个字母的代码减1,后4个字母的代码加1
首先要将字符转成对应的ASCII码,然后根据加密规则进行加密,解密时则根据解密规则进行解密。具体实现如下:
```python
encrypted_str = "J Bn b Fhqk"
# 解密规则:空格代码未变,前4个字母的代码减1,后4个字母的代码加1
def decrypt(c):
if c == " ":
return " "
else:
ascii_code = ord(c)
if 65 <= ascii_code <= 90: # 大写字母
if ord(c)-1 < 65:
return chr(ord(c)-1+26)
else:
return chr(ord(c)-1)
elif 97 <= ascii_code <= 122: # 小写字母
if ord(c)+1 > 122:
return chr(ord(c)+1-26)
else:
return chr(ord(c)+1)
# 将字符串解密
decrypted_str = "".join([decrypt(c) for c in encrypted_str])
print(decrypted_str)
# 加密规则:空格代码未变,前四个字母的代码加1,后四个字母的代码减1
def encrypt(c):
if c == " ":
return " "
else:
ascii_code = ord(c)
if 65 <= ascii_code <= 90: # 大写字母
if ord(c)+1 > 90:
return chr(ord(c)+1-26)
else:
return chr(ord(c)+1)
elif 97 <= ascii_code <= 122: # 小写字母
if ord(c)-1 < 97:
return chr(ord(c)-1+26)
else:
return chr(ord(c)-1)
# 将字符串加密
encrypted_str = "".join([encrypt(c) for c in decrypted_str])
print(encrypted_str)
```
输出结果:
```
I Am a Eagle
H@l0` ~#gpij
```
用python表达式解密密文J Bn b Fhqk,减密规则:空格代码未变,前4个字母的代码减1,后4个字母的代码加1
首先需要将密文转换成ASCII码,可以用ord()函数实现:
```
message = "J Bn b Fhqk"
ascii_codes = []
for char in message:
if char == " ":
ascii_codes.append(ord(char))
else:
ascii_codes.append(ord(char) - 1)
```
得到ascii_codes为[72, 32, 97, 109, 32, 98, 32, 69, 103, 112, 106],接下来需要将前4个字母的代码加1,后4个字母的代码减1,可以用切片和循环实现:
```
for i in range(len(ascii_codes)):
if i < 4 or i > 7:
continue
if i < 8:
ascii_codes[i] += 1
else:
ascii_codes[i] -= 1
```
最后将ASCII码转换成字符串即可:
```
result = ""
for code in ascii_codes:
result += chr(code)
print(result)
```
得到的明文为"I Am a Data"。