打開題目,發現
呀,是個數學計算題,百度可以知道這是個仿射加密,和凱撒密碼一樣,屬於“代換密碼”。
它的加密算法為: c = E(p)=(a*p+b) mod m (其中p為明文,c為密文, 且a和m互質,m為字母的個數)
解密算法為: p = D(c) = ((c-b)*(a的逆)) mod m (這里a的逆是指a在群空間m下的乘法逆元,可用擴展的歐幾里得算法求出)
在這道題中,我們已知了加密算法中的a和b,那么只要求出a的逆,這道題也就解出來啦!
手動解法如下:(擴展的歐幾里德算法,我是在b站上看的,up主為圓號本昊,講的很詳細!還有我不會用word寫出數學式子,所以只能手寫啦)
然后,a的逆已經求出來了,那么我們寫個小小的腳本,把明文破譯出來
x= 19 text = 'welcylk' s=[] for i in text: m = ord(i)-97 s.append(m) print(s) for num in s: n = ((num-6)*x) % 26 print(chr(n+97),end=" ")
運行結果:
把答案 'sorcery' 用base64編碼提交就好啦!!!(其實這道題可以直接通過在線網站解出來,不過,手動算一下,對於第一次接觸的我還是很開心啦)