defencode(shuru): str_ascii_list = [ ('{:0>8}').format(str(bin(ord(i))).replace('0b', '')) for i in shuru ] #{:0>8}为数字补零,填充左边,总宽度为8,replace去掉换成二进制之后的0b output_str = ''#预备 equal_num = 0 while str_ascii_list: temp_list = str_ascii_list[:3]#切片3之前的 iflen(temp_list) != 3: #如果temp长不为3 whilelen(temp_list) < 3: equal_num += 1#equal+1 temp_list += ['00000000']
temp_str = ('').join(temp_list) print(temp_str) temp_str_list = [ temp_str[x:x + 6] for x in [0,6,12,18]]#按顺序取 0,6| 6,12|,12,18|,18,24 ,相当于分割成6位 print(temp_str_list) temp_str_list = [ int(x, 2) for x in temp_str_list ]#二进制形式的x,化成整数 print(temp_str_list) if equal_num:#大于3的时候不触发 temp_str_list = temp_str_list[0:4 - equal_num] print(letters[x] for x in temp_str_list ) output_str += ('').join([ letters[x] for x in temp_str_list ]) print(output_str) str_ascii_list = str_ascii_list[3:] #反复到没得切
import string letters = list(string.ascii_letters) + list(string.digits) + ['+', '/'] data= 'FcjTCgD1EffEm2rPC3bTyL5Wu2bKBI9KAZrwFgrUygHN' llen=len(data) llen2=len(letters) serial=[] for j inrange(llen): for i inrange(llen2): if letters[i]==data[j]: serial.append(i) llen3=len(serial)
ascii_list = [ ('{:0>6}').format(str(bin(i)).replace('0b', '')) for i in serial ] output =[] #预备 while ascii_list: temp_list = ascii_list[:4] temp_str = ('').join(temp_list) temp_str_list = [temp_str[x:x + 8] for x in [0, 8 ,16]] # 切成8位 temp_str_list = [int(x, 2) for x in temp_str_list] for x in temp_str_list: output.append(x) ascii_list = ascii_list[4:] output = list(output) for i inrange(len(output)): if i % 2 == 0: #偶数位与奇数位分开处理 output[i] = (output[i] + 2) #变成偶数加一位 output[i] = (output[i] - 1) output.reverse() flag='' for i inrange(len(output)): output[i]=chr(output[i]) flag+=output[i] print(flag)