ROT-X
通常指的是明文(Plain Text) 經過 Caesar
加密位移 X 的這個過程
所以 ROT-3
就是明文往後移 3 位 ABC
-> DEF
所以題目給的是往後移 3 位的結果
那就往後移 23 位 (等於往前移 3 位) 的方式還原明文
可以使用線上工具 Online Caesar Solver
Cipher Text : IODJ{i1U57_7Ub_0i_fUbs70}
Plain Text : FLAG{f1R57_7Ry_0f_cRyp70}
原理等同上面 只是 ROT-13
常會被獨立拉出來講
一個明文經過兩次 ROT-13
一樣等於明文
因為 13 + 13 == 26
所以用同樣的工具解即可
Cipher Text : SYNT{13_1f_3dh4Y_70_3_1a_E07!?!?}
Plain Text : FLAG{13_1s_3qu4L_70_3_1n_R07!?!?}
普通的 ROT-1
~ ROT-26
基本上都是將單位限制在字母
ROT-47
則是增加了其他的單位
但是 ROT-47 已經不再是位移的加密法了 而是有自己固定的表
所以不會存在 Key 的問題
ABC
經過 ROT-47 必定是 pqr
pqr
經過 ROT-47 必定是 ABC
Cipher Text : u{pvL~z04cb$cC0$bC:tD0xd0f@_0bcdJN
Plain Text : FLAG{OK_c43S4r_S3riEs_I5_7o0_345y}
Substitution 就跟他名字一樣
會將某個字全部改成另外一個字
可是通常我們不會拿到所謂的 AlphaBet
這時候就要透過 詞頻分析(Frequency Analysis)
去猜測哪個字轉換成哪個字
不過詞頻分析必須在足夠多文字的狀況下準確率才會高
RSA 通常會產一個質數 p 跟質數 q
並且 產生 N
生成一個公鑰 e
明文為 M
這樣就生成了密文 C
如果要解密
則需要先將 N 分解 為 p q
並且產生 N 的 phi
這時候要生成私鑰 d
所以 d 為 e 在 mod 下的模反元素
反解密文就是
這題已經給了 c d n
所以照著最上面的做法做就好
Plain Text : FLAG{RSA_15_tO()_EZZZZZZZZZZZZZZZZZZZZZ}
這次只有給 c e n 了
所以需要自行分解 n 去計算 接著算 d
我們可以透過 factorDB 去尋找已知的分解結果
把 n 丟上去就會看到這個 n 剛好有結果
Plain Text : FLAG{A_L1tTl3_H4rD_w1th_0n1y_c_e_n}
RSA 還有很多可以玩的 像是 Padding Oracle
, Known High Bit
…
不過這些都要有很好的數學基礎
如果想要了解上面的計算過程
可以去看
費馬小定理
擴展歐幾里得
其他現代數論
因為我不知道你們課程中間上了啥 所以我就隨便寫
然後你們社長說想要有 HomeWork
所以那題我會在一個禮拜後寫解答
請先不要互相討論
我們先觀察一下內容
先把 flag
轉成數值的型態
接著 getPrime
生成 3 個 500 bit 的質數
n1 = p * q1
n2 = p * q2
這題攻擊點還滿明顯的
因為這次數值沒有辦法在 factorDB
上找到分解結果 (因為我沒上傳
所以直接像 Medium
硬解是不行的
不果可以觀察到 n1
跟 n2
共用了 p 這個質數
這就導致可以用輾轉相除法 直接得出 p
這樣我們就能夠直接求出 q1
跟 q2
然後選擇其中一項解即可