目前不是很理解这个六十四卦是什么情况,只知道把他们都拆分成对应6位二进制,然后对照密文得到的二进制8位一拆分最后解码
s='升随临损巽睽颐萃小过讼艮颐小过震蛊屯未济中孚艮困恒晋升损蛊萃蛊未济巽解艮贲未济观豫损蛊晋噬嗑晋旅解大畜困未济随蒙升解睽未济井困未济旅萃未济震蒙未济师涣归妹大有' dic={'坤': '000000', '剥': '000001', '比': '000010', '观': '000011', '豫': '000100', '晋': '000101', '萃': '000110', '否': '000111', '谦': '001000', '艮': '001001', '蹇': '001010', '渐': '001011', '小过': '001100', '旅': '001101', '咸': '001110', '遁': '001111', '师': '010000', '蒙': '010001', '坎': '010010', '涣': '010011', '解': '010100', '未济': '010101', '困': '010110', '讼': '010111', '升': '011000', '蛊': '011001', '井': '011010', '巽': '011011', '恒': '011100', '鼎': '011101', '大过': '011110', '姤': '011111', '复': '100000', '颐': '100001', '屯': '100010', '益': '100011', '震': '100100', '噬嗑': '100101', '随': '100110', '无妄': '100111', '明夷': '101000', '贲': '101001', '既济': '101010', '家人': '101011', '丰': '101100', '离': '101101', '革': '101110', '同人': '101111', '临': '110000', '损': '110001', '节': '110010', '中孚': '110011', '归妹': '110100', '睽': '110101', '兑': '110110', '履': '110111', '泰': '111000', '大畜': '111001', '需': '111010', '小畜': '111011', '大壮': '111100', '大有': '111101', '夬': '111110', '乾': '111111'} i=0 c='' while True: if i>=len(s): break try: c+=dic[s[i]] except: c+=dic[s[i]+s[i+1]] i+=1 i+=1 flagenc='' for i in range(0,len(c),8): flagenc+=chr(int(c[i:i+8],2)) print(flagenc) flag=base64.b64decode(flagenc).decode()得到了:
然后对给定的两个函数进行解密encrypt4把对应的数字再加回去即可
encrypt5貌似是仿射密码,比如y=(a*x+b)%26 那么x=(a的逆元)*(y-b)%26
b给了,a没有,因此对a进行一下爆破
就得到了flag:flag{bjdcongratulationsongettingtheflag}