提示是一段base64编码的?
似乎没什么作用
题目附件下载下来,打开是php文档
md5加密ISCC,md5(str, raw) raw=False 默认32位
$key = 729623334f0aa2784a1599fd374c120d
$klen = 32
$data是啥来的?难道是之前提示所给的,但这个函数名字叫encrypt 加密,是不是这个所谓的base64就是这个加密算法得出来的呢?那再捋一下这个算法
ord() 函数返回字符串的首个字符的 ASCII 值
chr() 根据ASCII 值返回字符
这个时候应该进行解密
解密第一步应该是把base64解密,但是上面解码出来是乱码的,这样做可能不太,那么我们直接写一个解密算法,把base64解密放在解密算法中
解密算法如下
import base64
b64 = 'fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA='.encode()
str = base64.b64decode(b64).decode('utf-8')
print(str)
#代码原创,公开使用请注明出处https://blog.csdn.net/kongzhian/article/details/112083015
key ='729623334f0aa2784a1599fd374c120d'
klen = len(key)
slen = len(str)
char = []
x = 0
for i in range(slen):
if x == klen:
x = 0
char.append(key[x])
x += 1
#代码原创,公开使用请注明出处https://blog.csdn.net/kongzhian/article/details/112083015
flag = []
for i in range(slen):
ascil1 = ord(char[i]) #转换成ascil码
ascil2 = ord(str[i]) #跟data有关
if ascil1 < ascil2:
flag.append(ascil2 - ascil1)
elif ascil1 == ascil2:
flag.append('0')
elif ascil1 > ascil2:
flag.append(ascil2+128-ascil1)
#代码原创,公开使用请注明出处https://blog.csdn.net/kongzhian/article/details/112083015
for i in range(slen):
flag[i] = chr(flag[i])
#数组转字符串
flagStr = ''.join(flag)
print(flagStr)
得出flag