key = b'af16d2be89' iv = b'1267c0a384' ciphertext ...
Erstellt am: 27. Dezember 2025
Beantwortet mit GPT-5.2 Thinking von Chat01
Erstellt am: 27. Dezember 2025
Beantwortet mit GPT-5.2 Thinking von Chat01
key = b'af16d2be89'
iv = b'1267c0a384'
ciphertext = "zwigdGvSD4whnlVAvqyeTyheBYSXALx8JmukmD0Auns2PZ8wN1b16vCts1dNICJD"分析获取密文结果
pythonimport base64, binascii, textwrap, math, hashlib, os, itertools, string, re ct="zwigdGvSD4whnlVAvqyeTyheBYSXALx8JmukmD0Auns2PZ8wN1b16vCts1dNICJD" raw=base64.b64decode(ct) len(raw), raw[:16] (48, b'\xcf\x08\xa0tk\xd2\x0f\x8c!\x9eU@\xbe\xac\x9eO')
pythonimport hashlib, itertools, math from Crypto.Cipher import AES from Crypto.Util.Padding import unpad def derivations(b): # returns list of (name, bytes16) outs=[] # zero pad right outs.append(("zeropad_r", b.ljust(16,b'\x00')[:16])) # zero pad left outs.append(("zeropad_l", b.rjust(16,b'\x00')[-16:])) # repeat outs.append(("repeat", (b*math.ceil(16/len(b)))[:16])) # md5 outs.append(("md5", hashlib.md5(b).digest())) # sha1 first16 outs.append(("sha1_16", hashlib.sha1(b).digest()[:16])) # sha256 first16 outs.append(("sha256_16", hashlib.sha256(b).digest()[:16])) # if b looks hex, decode try: hb=bytes.fromhex(b.decode()) outs.append(("hex_zeropad_r", hb.ljust(16,b'\x00')[:16])) outs.append(("hex_repeat", (hb*math.ceil(16/len(hb)))[:16])) outs.append(("hex_md5", hashlib.md5(hb).digest())) outs.append(("hex_sha256_16", hashlib.sha256(hb).digest()[:16])) except Exception: pass # unique uniq={} for name, val in outs: uniq[(name,val)]=val return outs def score_pt(pt): # score based on printable ratio and utf-8 try: s=pt.decode('utf-8') utf=True except Exception: utf=False s=None printable=sum( (32<=c<=126) or c in b'\r\n\t' for c in pt) ratio=printable/len(pt) # bonus if contains common patterns bonus=0 if utf and any(ch in s for ch in ['{','}','flag','FLAG','CTF','http','https','密码','明文','密文']): bonus+=0.2 if utf and all(ord(ch)<128 for ch in s): bonus+=0.05 return ratio+bonus+(0.1 if utf else 0) candidates=[] for kname,kbytes in derivations(key): for vname,vbytes in derivations(iv): try: cipher=AES.new(kbytes,AES.MODE_CBC,iv=vbytes) pt=cipher.decrypt(raw) # try unpad for do_unpad in [True,False]: try: upt=unpad(pt,16) if do_unpad else pt except Exception: continue sc=score_pt(upt) candidates.append((sc,kname,vname,do_unpad,upt)) except Exception: continue candidates_sorted=sorted(candidates,key=lambda x:x[0],reverse=True) candidates_sorted[:10] [(0.5416666666666666, 'hex_md5', 'sha256_16', False, b'j:\x1f\x82\x94`W\\]\xb3\nE*[U\x8f%\xf4\xa2p\xd1\x1a7\x8c\r\x9b\x1f\x17\x10GQsnO\xb3\xe0\xb9\xbd\r}\xf2\xfe\x1d@\xe1WT!'), (0.5416666666666666, 'hex_sha256_16', 'hex_zeropad_r', False, b"\xe5\xcfL'I\x8eP\xc3pn>~\xce\r\x12\xf1*)\x1aybX\x15\xb0V\xac\xfe\x8f4gT\xa53oUO\xc7\x7f!&a\x0e\xf9r\xf6\xbc\xca\xc9"), (0.5208333333333334, 'hex_repeat', 'sha1_16', False, b"%a\x11\xeb>\xfc\x98U!6'q*X\xf7\x85U\x1e>\xd2)\xdc\x14\\\xdf\x12\xdb<,=\xde\xde_\xea\xb72Y~\x10\xc5\xcd\xc8\x13~s3t\x98"), (0.5, 'sha1_16', 'hex_repeat', False, b'X]\x1b\r2J\xa1:Y\rK(\xe4\x1b\xf8\xa8~\xbf4tHVj\x80\xfb\xea\xd4\xffJ3\xb9W+\xef\x03o\xd4|\xde\xea\\\x84\xeaF\xb4\xd9\xe0\xfc'), (0.5, 'hex_md5', 'repeat', False, b'n\x14>\xc5\x19 \xbd>\x0e\x8b\x9f|i<TK%\xf4\xa2p\xd1\x1a7\x8c\r\x9b\x1f\x17\x10GQsnO\xb3\xe0\xb9\xbd\r}\xf2\xfe\x1d@\xe1WT!'), (0.5, 'hex_md5', 'sha1_16', False, b'Y\xcd}\xe3\xa6\xa9,\x10^\x8euW~\xb252%\xf4\xa2p\xd1\x1a7\x8c\r\x9b\x1f\x17\x10GQsnO\xb3\xe0\xb9\xbd\r}\xf2\xfe\x1d@\xe1WT!'), (0.5, 'hex_md5', 'hex_zeropad_r', False, b'MA\xc8Q\xfe\x10\xdc\r6\xbf\xaeN_\x0b7{%\xf4\xa2p\xd1\x1a7\x8c\r\x9b\x1f\x17\x10GQsnO\xb3\xe0\xb9\xbd\r}\xf2\xfe\x1d@\xe1WT!'), (0.5, 'hex_sha256_16', 'zeropad_l', False, b'\xf7\xa8\x8c\x84\xcd\x8ea\xf1FY]N\xaf>*\xc5*)\x1aybX\x15\xb0V\xac\xfe\x8f4gT\xa53oUO\xc7\x7f!&a\x0e\xf9r\xf6\xbc\xca\xc9'), (0.4791666666666667, 'zeropad_r', 'hex_zeropad_r', False, b'lP\xce9ZY\xa6X\xe1\x13t\xa6\x94F\x85\xb3\xf2\x12\xcd\xa9\n\x06=hxC=\xb6I\xc8\x80`\x9b\xa0z\xd1\xd0JmC:\x0f\xc9\xa7\xdc%\xbdp'), (0.4791666666666667, 'zeropad_r', 'hex_repeat', False, b'lP\xce9ZK\xc1\x98B\x97f\xc1T\xe5\x01\xa1\xf2\x12\xcd\xa9\n\x06=hxC=\xb6I\xc8\x80`\x9b\xa0z\xd1\xd0JmC:\x0f\xc9\xa7\xdc%\xbdp')]
pythonutf_candidates=[] for sc,kname,vname,do_unpad,pt in candidates_sorted: try: s=pt.decode('utf-8') utf_candidates.append((sc,kname,vname,do_unpad,s)) except: continue utf_candidates[:20], len(utf_candidates) ([], 0)
pythonfrom Crypto.Cipher import DES, DES3 from Crypto.Util.Padding import unpad key_ascii=b"af16d2be89" iv_ascii=b"1267c0a384" ct_raw=raw def try_modes(cipher_cls, key_bytes, iv_bytes): results=[] # CBC try: c=cipher_cls.new(key_bytes, cipher_cls.MODE_CBC, iv=iv_bytes) pt=c.decrypt(ct_raw) for unp in [True,False]: try: upt=unpad(pt, cipher_cls.block_size) if unp else pt except: continue results.append(("CBC",unp,upt)) except Exception as e: pass # CFB try: c=cipher_cls.new(key_bytes, cipher_cls.MODE_CFB, iv=iv_bytes) pt=c.decrypt(ct_raw) results.append(("CFB",False,pt)) except: pass # OFB try: c=cipher_cls.new(key_bytes, cipher_cls.MODE_OFB, iv=iv_bytes) pt=c.decrypt(ct_raw) results.append(("OFB",False,pt)) except: pass return results def evaluate(pt): # try decode to utf-8 or latin1 try: return True, pt.decode('utf-8') except: try: s=pt.decode('latin1') # check printable ratio printable=sum( (32<=ord(ch)<=126) or ch in '\r\n\t' for ch in s)/len(s) if printable>0.9: return True,s except: pass return False,None # DES with first 8 bytes ascii key8=key_ascii[:8] iv8=iv_ascii[:8] res=try_modes(DES,key8,iv8) [(mode,unp,pt[:50],evaluate(pt)[0]) for mode,unp,pt in res][:10], len(res) ([('CBC', False, b'{\xa4V\xd8V9{sW\x88\xb6\xefm\xf8b\x03\n\x8a\x9b\xf3\x195\xc0\x14\xa6\x90r\x8e\x7f\n?\xb9\xc6\xd3\x90{>\xf73\x0c3$@=l\x06w`', False), ('CFB', False, b'\xd2\x96FDML\xd8\x98\x11\xb8\x8b(\xd8\xf8\x81b\x1a\xf1\x9fw\x9c%V\xe9\x14\xe2\x1b\xfb\xe7c\xe7\x13M\x19\x07Y\x82f\xd2\x13\x1c\x96\x04\x82H\xa7\xfb\x9d', False), ('OFB', False, b'\xd25\x05\xa2\x1bL\xab\xeb\x7fa42a\xa3\xb0\x12\xf7\xf9\x1e\xfa\xd4\xf9\xd2\xf5\xd8\tC\x8e\xb2,\x85\x80\xe7z\xddc\xf8\x9d\x1d\x18\xdb\x0b\xd7\x11l<T\xeb', False)], 3)
pythonkey8_hex=bytes.fromhex("af16d2be89"+"000000") iv8_hex=bytes.fromhex("1267c0a384"+"000000") res=try_modes(DES,key8_hex,iv8_hex) [(mode,unp,evaluate(pt)[0],pt[:32]) for mode,unp,pt in res] [('CBC', False, False, b'\xc2r\xda\xc5+\x1c\x83\x06\xba\xff\xbaP\xc2\x98\xabV\xf7/\xef\x1e/\xbbN3"\xd0\xfd\x9a\xa9\x11\x057'), ('CFB', False, False, b'\x94:]L\x02h|\xc5\x06\x04\x8bP\x84\xa6+\xd9\t\xb8\xe3\xa9\x8c\xe7\xa3\x97M\xbc+\x1c\x02\xdc\x99Z'), ('OFB', False, False, b'\x94I\x0e\xf2\xd9\xec>\xff\xbd\xf3\xccs\xc3\xd1Z\xf9\x87p\x8c\x1c\xf2\x96\xa4\xa6\xf0Ad\x13\xee499')]
pythonfrom Crypto.Cipher import DES3 def get3des_key(b, size): # size 16 or 24 return b.ljust(size,b'\x00')[:size] def try_3des(): outs=[] for size in [16,24]: k=get3des_key(key_ascii, size) for iv in [iv_ascii.ljust(8,b'\x00')[:8], iv_ascii[:8], iv8_hex, iv_ascii[-8:]]: try: k2=DES3.adjust_key_parity(k) except Exception: continue try: c=DES3.new(k2, DES3.MODE_CBC, iv=iv) pt=c.decrypt(ct_raw) for unp in [True,False]: try: upt=unpad(pt,8) if unp else pt except: continue ok,s=evaluate(upt) outs.append((ok, size, iv, unp, upt[:50], s[:100] if s else None)) except Exception as e: pass return outs outs=try_3des() [o for o in outs if o[0]][:5], len(outs) ([], 8)
pythonimport hashlib, itertools, math, binascii from Crypto.Cipher import AES from Crypto.Util.Padding import unpad key_s=b"af16d2be89" iv_s=b"1267c0a384" def base_variants(b): vars=[] vars.append(("ascii", b)) # try hex decode if possible try: vars.append(("hex", bytes.fromhex(b.decode()))) except: pass return vars def hash_variants(name, b): hs=[] hs.append((f"{name}", b)) hs.append((f"{name}_md5", hashlib.md5(b).digest())) hs.append((f"{name}_sha1", hashlib.sha1(b).digest())) hs.append((f"{name}_sha256", hashlib.sha256(b).digest())) hs.append((f"{name}_sha512", hashlib.sha512(b).digest())) return hs def stretch_to_sizes(name,b): outs=[] for size in [16,24,32]: # repeat outs.append((f"{name (306, 74)
pythonimport string, zlib, gzip, io, json, re def printable_ratio(pt): return sum((32<=c<=126) or c in b'\r\n\t' for c in pt)/len(pt) if pt else 0 def extra_score(pt): score=printable_ratio(pt) # if looks like utf-8 try: s=pt.decode('utf-8') score+=0.15 if re.search(r'[\x00-\x08]', s): score-=0.2 if any(tok in s.lower() for tok in ['flag','ctf','http','{','}','password','key','iv','密文','明文']): score+=0.3 if re.match(r'^\s*[{[]', s): score+=0.2 except: pass # check if zlib if pt.startswith(b'\x78\x9c') or pt.startswith(b'\x78\x01') or pt.startswith(b'\x78\xda'): score+=0.1 if pt.startswith(b'PK\x03\x04') or pt.startswith(b'\x1f\x8b'): score+=0.1 return score best=[] for kname,kb in keys: for ivname,ivb in ivs: try: cipher=AES.new(kb, AES.MODE_CBC, iv=ivb) pt=cipher.decrypt(ct_raw) try: upt=unpad(pt,16) except: continue sc=extra_score(upt) if sc>0.9: best.append((sc,kname,ivname,upt)) except Exception: continue len(best), (sorted(best, key=lambda x:x[0], reverse=True)[:5] if best else None) (0, None)
pythonbest=[] for kname,kb in keys: for ivname,ivb in ivs: try: cipher=AES.new(kb, AES.MODE_CBC, iv=ivb) pt=cipher.decrypt(ct_raw) try: upt=unpad(pt,16) except: continue sc=extra_score(upt) best.append((sc,kname,ivname,upt)) except Exception: continue best_sorted=sorted(best, key=lambda x:x[0], reverse=True) best_sorted[:10], len(best_sorted) ([(0.5319148936170213, 'hex+hex_sha256_rep24', 'hex+hex_sha256_rep16_16', b'\xd4--t\xd5B"XL_\xed+a&+\xa0V\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/'), (0.5106382978723404, 'hex+hex_sha256_rep24', 'hex+ascii_sha1_rep16_16', b'S)C\xf6\xad\xa6*Y\rI:^\xeel\xd9\nV\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/'), (0.46808510638297873, 'hex+hex_sha256_rep24', 'ascii_md5_rep16_16', b'\xcb\xcau\x15g\xf0F\x98eY\x90H>\x9ambV\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/'), (0.46808510638297873, 'hex+hex_sha256_rep24', 'asciimd5_sha1_rep16_16', b'+\xab\r\xf13`"D\r\'{\xe7\xbd\x85\xf7\xbfV\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/'), (0.46808510638297873, 'hex+hex_sha256_rep24', 'asciisha256_md5_rep16_16', b'i\t@k\xd2\x011\x02N\xa2\x187\x08\x15h*V\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/'), (0.46808510638297873, 'hex+hex_sha256_rep24', 'hex_sha256_rep16_16', b'_\x9eS-\xfb7e@\xd4\x9dr\x08\x06w+\xb1V\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/'), (0.44680851063829785, 'hex+hex_sha256_rep24', 'ascii+ascii_sha1_rep16_16', b'4k\xa8\xe5L\r\x83GTLm\x99\xc6\xdb\xdb\x8dV\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/'), (0.44680851063829785, 'hex+hex_sha256_rep24', 'asciimd5_sha512_rep16_16', b"\xd5yj'\xb2\x92C\x9c\xfal\x9az\x19\xe0>,V\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/"), (0.44680851063829785, 'hex+hex_sha256_rep24', 'ascii+hex_sha512_rep16_16', b'\x9c-d\xcc\xde\x92*m\x90}P:\xfc:\x88\xd9V\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/'), (0.44680851063829785, 'hex+hex_sha256_rep24', 'ascii+hex_sha1_rep16_16', b'+Z\x1fX?\x15\xf2\xa47\x19\xcbS6\xf0{\x1aV\x0f\xcd\xce\xab\xfa\x81\x0c\x8b\xd5I\xd8\x91#Df9\xb8\x02{7]y\xebt\xc4?\xdf\xcd\xa0/')], 74)
pythonfrom Crypto.Util.Padding import pad k=pad(key_s,16) v=pad(iv_s,16) k,v,len(k),len(v),k,v (b'af16d2be89\x06\x06\x06\x06\x06\x06', b'1267c0a384\x06\x06\x06\x06\x06\x06', 16, 16, b'af16d2be89\x06\x06\x06\x06\x06\x06', b'1267c0a384\x06\x06\x06\x06\x06\x06')
pythoncipher=AES.new(k,AES.MODE_CBC,iv=v) pt=cipher.decrypt(ct_raw) pt[:32], pt (b'4\x90\xed\x99#\xb5|\xc2\xdb\xa1\x7f\xa688\xee>E\xc5War\xaa\x16J\xc4D\x0e\x90\x90\xbcw\x8d', b'4\x90\xed\x99#\xb5|\xc2\xdb\xa1\x7f\xa688\xee>E\xc5War\xaa\x16J\xc4D\x0e\x90\x90\xbcw\x8d\xf8\x9a\x14\xc3Y\xc4\xb0IT.\x16\xdf\xcd\x08\x9c\r')
pythonunp=unpad(pt,16) len(unp), unp
pythonfrom Crypto.Cipher import AES best_ecb=[] for kname,kb in keys: try: cipher=AES.new(kb, AES.MODE_ECB) pt=cipher.decrypt(ct_raw) for do_unpad in [True,False]: try: upt=unpad(pt,16) if do_unpad else pt except: continue sc=extra_score(upt) best_ecb.append((sc,kname,do_unpad,upt)) except Exception: continue best_ecb_sorted=sorted(best_ecb,key=lambda x:x[0],reverse=True) best_ecb_sorted[:10] [(0.6041666666666666, 'ascii+ascii_md5_rep16', False, b"\xb0\xb2Z{4\x10\xe6':\xe8^3\xdf8\xe8\xa0qWS\xba\xa68JF\nP\xf5euC!\xf9k\xcd\xdc@\xe7\x94i6c.\xd0\x1bz\xdcNE"), (0.5833333333333334, 'asciixorascii_sha512_rep32', False, b'ne&\xf8m-\xdd\xbc\xb0\xc7\xbeSdvZ\x1d[S\xb35)~^\xed\x81\xd2_Z\xeeU:~\x89Iu\x10s`\x81\xa8\x88\xb3UU\x06Da\x95'), (0.5833333333333334, 'hexxorascii_sha512_rep16', False, b'a\x85:K\x1d\xe534F1[]~DvTp\x18vz\x95\x0bu$\x8b\xdd]\xbc]\x1c\xca\x7f\xaf\xb3r\x18a\xc0\x18g3s\xb0\xc7v\xb8=g'), (0.5416666666666666, 'ascii+ascii_md5_rep16', False, b"\xd5\xd3^\xf5\xd8n\xec\xad\n-7\xd1\xb9qvn\xa2G\x99^\x1fL\xdd\x7f:\x18C~6.\xd8q$\nt\xf8\x98!)s'\xfb\n\xe5\x9fi\x7f\x1d"), (0.5416666666666666, 'hexxorascii_pad016', False, b"O\x1e\xe3\xed\xcd\xe4\x0bQ:\xb2@:H\\\x17\x11\xa3o\x81z^31\xa2\x157MB\xb9\xd7\x1b8\x871n_*x(\xa9\xecS'\xa4%\xc8@\xe5"), (0.5416666666666666, 'hex+hex_md5_pad032', False, b'\xb2r\xecM>\xfct\xe2s3_y\xd3\xc6fU\xef\xf2tq\xb9c\x1d+?"\xc3,\r^\xa5b\xf0\xe1xh3!\xbf\x84\xa6\x18\x9c\xebP=\xa8\xb3'), (0.5208333333333334, 'hexxorascii_pad024', False, b"\xd6\x8b\x12e\xf0iGp8XvC\xa3\xafg\xfe}g?S\xb9'\x010\x84TUSP\xc6\xaaUs\x16F\x8c\x0fO\xd6\t\xa2\x1b\xd5\xb2\x0b\xf5\xae2"), (0.5, 'ascii_sha512_rep32', False, b'\x14<\xca\xc7\x8bE?hzn\x02\xf2@(a\x00hze#5)\x9d\xe7H~\xefp\x8e\xe3op\x02\xef\xf1\xa3\x08H)\xb5\x01\xcc\xdb1\xb08\x11\xa8'), (0.5, 'ascii+ascii_sha1_pad024', False, b'\xcfU\x05 *0\x16\xf8tSy\xccC6\xdeh\xc31Y\x9c\xaf\xc6\x1b\x19n(P\x02\x97\xcc\xbeV\r\xc7q\x94\x99}\xf7].\x1e\xac\x9b$-\x1c}'), (0.5, 'ascii+hex_sha256_rep24', False, b'PO\xfe\x1a\xd24BW\xe3\x82\xd0?qr\x1e\x03W\xab\xef\xaa\x03\x15#\x1ar\x85i$\xca$\xf3mf~\x87,I^/\xf5\xb9[\x8e\x16Q\xcd"\xa7')]
pythonhexstr=raw.hex() hexstr, len(hexstr) ('cf08a0746bd20f8c219e5540beac9e4f285e05849700bc7c266ba4983d00ba7b363d9f303756f5eaf0adb3574d202243', 96)
你这个 ciphertext 看起来是 Base64 字符串(不是直接的二进制密文)。把它 Base64 解码后,才能得到“真正的密文字节”。
cf08a0746bd20f8c219e5540beac9e4f285e05849700bc7c266ba4983d00ba7b363d9f303756f5eaf0adb3574d202243
按 16 字节分块(每块 32 个 hex 字符):
cf08a0746bd20f8c219e5540beac9e4f285e05849700bc7c266ba4983d00ba7b363d9f303756f5eaf0adb3574d202243你写的是:
key = b'af16d2be89' → 这是 10 字节的 ASCII(内容是字符 a f 1 6 ...),不是 0xaf 这种“hex字节”iv = b'1267c0a384' → 同理也是 10 字节 ASCII而常见的 AES-CBC/AES-CTR 需要:
所以仅靠你给的 key/iv/ciphertext 还无法唯一解密出明文,除非你确定:用的是什么算法/模式,以及 key/iv 是怎么从这两个字符串变成合规长度的(比如补零、重复、MD5/SHA256 派生等)。
pythonimport base64 ciphertext_b64 = "zwigdGvSD4whnlVAvqyeTyheBYSXALx8JmukmD0Auns2PZ8wN1b16vCts1dNICJD" ct = base64.b64decode(ciphertext_b64) print("len:", len(ct)) print("hex:", ct.hex()) # 16-byte blocks for i in range(0, len(ct), 16): print(i//16, ct[i:i+16].hex())
如果你接下来把加密算法/模式/填充方式说一下(例如:AES-CBC/PKCS7、AES-CTR、AES-GCM 等,以及 key/iv 是直接用、补零、还是 hash 生成),我就可以把解密脚本也给你并直接算出明文。