古典密碼-仿射密碼Affine


仿射密碼Affine基礎知識

仿射密碼屬於一種替換密碼,通過對一個字母使用加密函數(模運算)生成另外一個字母(某些情況下,不只是字母)。

加密函數:

\[E(x) ≡ (ax + b) (mod\ m) \]

  • a、b:函數的參數部分,不同的加密有不同的值
  • m:字母的數量,一般值為26、32等
  • a與m互質

解密函數:

\[D(x) ≡ a^{-1}(x-b)(mod\ m) \]

  • \(a^{-1}\)是a關於模m的乘法逆元

上述解密函數的式子是相對於加密函數而言的,特殊情況下(直接要得到解密函數的參數時)可以直接設解密函數為y = a*x + b (mod Z)

仿射密碼wiki

舉個栗子

加密

以加密函數 \(E(x) = (5x + 8) (mod 26)\) 為例,以字母表26個字母作為編碼系統

明文 A F F I N E C I P H E R
x 0 5 5 8 13 4 2 8 15 7 4 17
y = 5x+8 8 33 33 48 73 28 18 48 83 43 28 93
y mod 26 8 7 7 22 21 2 18 22 5 17 2 15
密文 I H H W V C S W F R C P

對應的加密結果為:IHHWVCSWFRCP

解密

在已知a = 5,m = 26的情況下,我們需要求a關於模m的逆元,

根據乘法逆元的定義,我們可以得到如下式子:

\[a·a^{-1} ≡ 1 (mod\ m) \]

帶入參數,有\(5·a^{-1} ≡ 1(mod 26)\) ,可以得到\(a^{-1}\) = 21

因此解密函數為:\(D(x) = 21(x - 8) (mod 26)\)

密文 I H H W V C S W F R C P
y 8 7 7 22 21 2 18 22 5 17 2 15
x = 21(y−8) 0 -21 -21 294 273 -126 210 294 -63 189 -126 147
x mod 26 0 5 5 8 13 4 2 8 15 7 4 17
明文 A F F I N E C I P H E R

解密后的明文結果為:AFFINECIPHER

相關題目

題目來源:https://adworld.xctf.org.cn/task/answer?type=crypto&number=5&grade=1&id=5535&page=1

題目信息

wK3GgH.png

題目分析

  1. 改題目源自bitsctf-2017,對BITSCTF這幾個字符進行base32加密得到IJEVIU2DKRDA==== base32加密網站
  2. 與文件所給的字符進行對比
M Z Y V M I W L G B L 7 C
I J E V I U 2 D K R D A ====

可以看到M和I一直都是對應的,故想到移位加密和仿射加密,易排除移位加密

  1. 反射密碼的解密需要解密函數,但這里並沒有解密函數,我們需要先得到解密函數
for a in range(-20,20):
    for b in range (-20,20):
        if (a*12+b)%32 == 8 and (a*25+b)%32 == 9:
            print(a,b)

可以得到a=5 b=12(多增加IF處的判斷語句就可以更加精確)

  1. 得到了ab,使用解密公式y = a*x+b (mod32)
c = "MZYVMIWLGBL7CIJOGJQVOA3IN5BLYC3NHI"
sn = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"
msg = ""
for i in c:
    msg += str(sn[(5*sn.find(i)+12)%32])
print(msg)

得到IJEVIU2DKRDHWUZSKZ4VSMTUN5RDEWTNPU

放入base32解密得到BITSCTF{S2VyY2tob2Zm}

參考資料

https://www.cnblogs.com/Mayfly-nymph/p/12394329.html

https://www.bilibili.com/video/BV1Gh411o7vM?t=332

https://www.bilibili.com/video/BV1qE411i7Zq?t=535

fanqiang

仿射密碼wiki

[仿射密碼ctf-wiki](


免責聲明!

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



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