元组解密,密文:enc=(75,11,7,26,164,59,246,229,85,26,18,54,224,120,233,246,163,235,93,246)

博客介绍了Python解题的两种方法。解法一采用逆向思维,还提及Python中^为按位异或运算符、**为幂运算,且算术运算符优先级高于位运算符;解法二采用正向思维,并给出了两种解法的运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述解法一:
思路:逆向思维
储备知识:
Python中,^表示:按位异或运算符,**:幂运算(这个我之前搞混了)。
注:算术运算符(+,-)>位运算符(^)

key='Maybe you are good at decryptint Byte Code, have a try!'
#print(ord(key[5]))
#print(len(key))=55
string=[] #明文
seed = 5
enc=(75,11,7,26,164,59,246,229,85,26,18,54,224,120,233,246,163,235,93,246) #密文
oringstring=[]
for  n in enc:
    for i in range(31,128):
        if (((i+seed^ord(key[seed]))-n)%255==0):
            oringstring.append(i)
            seed=(seed+1)%len(key)
           # print(n)
            #print(seed)
           # print(i)
          # print("***")
            break #break要加,负责会输出22个结果,会出错
#for x in range(len(oringstring)):
    #string.append(chr(oringstring[x]))
for x in oringstring:
    string.append(chr(x))

print(string)
print(len(string))

运行结果:

['f', 'l', 'a', 'g', '{', 'P', 'y', 't', 'h', 'o', 'n', 'I', 's', 'F', 'u', 'n', 'n', 'y', '!', '}']
20

解法二:
思路:正向思维

enc=(75,11,7,26,164,59,246,229,85,26,18,54,224,120,233,246,163,235,93,246)
key='Maybe you are good at decryptint Byte Code, have a try!'
seed=5
string=[]
for n in enc:
    for v in range(31,128):
        if((v+seed^ord(key[seed]))%255==n):
            seed = (seed + 1) % len(key)
           # print(n)
            #print(v)
            string.append(chr(v))
            break
print(string)
print("".join(string))

运行结果

['f', 'l', 'a', 'g', '{', 'P', 'y', 't', 'h', 'o', 'n', 'I', 's', 'F', 'u', 'n', 'n', 'y', '!', '}']
flag{PythonIsFunny!}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值