攻防世界-密碼學-fanfie


1. 題目信息

附件是一個文本文件,里面是一段長34的字符串。

2. 分析

文本中的字符串看上去像base32編碼,加填充后解碼得亂碼;很多時候比賽的名稱是解密的謎面,對字符串BITSCTF進行base32編碼得字符串IJEVIU2DKRDA====,與文本中的字符串MZYVMIWLGBL7CIJOGJQVOA3IN5BLYC3NHI進行對比,發現字符I兩次對應M,猜測是移位密碼或仿射密碼,加密運算的有限集為{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,2,3,4,5,6,7},不理解的可以參見對base編碼的介紹,嘗試之后得加密方式為仿射密碼,求得解密式為\(x=5y+12\ \textrm{mod}\ 32\)

3. 解題

實現的Python腳本如下:

from base64 import b32decode

def solve():
    s='MZYVMIWLGBL7CIJOGJQVOA3IN5BLYC3NHI'
    dic='ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'
    msg=''.join([dic[(5*dic.find(x)+12)%32] for x in s])
    return b32decode(msg+'='*(8-len(msg)%8))

if __name__=='__main__':
    #python solve.py
    print solve()

運行程序得如下結果:

$ python solve.py
BITSCTF{S2VyY2tob2Zm}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM