拿到题目以为是一般的变异凯斯其实不是这样的,题目中有提示Affine其实就是这一题的线索,Affine意思是放射密码,本质上是一种替换密码。
加密公式为
密文=(a*x+b)%m
其中a和m互质,m是字母的数量.m大多都是26
解密公式为
明文=(a**-1(x-b))%m
#这里的a**-1其实是a的逆元
粗略介绍完放射密码就可进行解题了.
这里附上自己写的解密脚本
import gmpy2
qwer=flag
sercet='fvwm{08k54wf606137wwy9d7w9r230078r7w4}'
for a in range(100):
for b in range(100):
c=''
for j in qwer:
cha=ord(j)-ord('a')
c+=chr((a * cha+ b) % 26+ord('a'))
#前面没有给出a和b所以只能根据fvwm=flag来爆破a和b
if 'fvwm' == c:
ni=gmpy2.invert(a,26)求a的逆元
flag=''
for i in sercet:
if ord(i) >= ord("a") and ord(i) <= ord("z"):
cha=ord(i)-ord('a')
flag+=chr((ni*(cha-b)%26)+ord('a'))
else:
flag+=i
print(flag)
a和b有很多种可能但出来的flag都是一样的