【CTF-加密】仿射密码(python)
这里直接上干货脚本,讲解请看我的视频。

1)出题脚本:
a = 7
b = 22
flag = 'flag{23a490bfcb767099e9ce48dee691a34b}'
c=''
for j in flag:
if ord(j)>=ord("a") and ord(j)<=ord("z"):
cha=ord(j)-ord('a')
c+=chr((a * cha+ b) % 26+ord('a'))
else:
c+=j
print c
2)解题脚本
#coding:utf-8
import gmpy2
a = 7
b = 22
c = 'fvwm{23w490dfkd767099y9ky48ryy691w34d}'
#解密方式
e=gmpy2.invert(7,26)
flag=''
for i in c:
if ord(i) >= ord("a") and ord(i) <= ord("z"):
cha=ord(i)-ord('a')
flag+=chr((e*(cha-22)%26)+97)
else:
flag+=i
print flag
#爆破方式2
flag=''
for i in c:
if ord(i) >= ord("a") and ord(i) <= ord("z"):
for j in range(0,26):
if i==chr((a * j+ b) % 26+ord('a')):
flag += chr(j+ord('a'))
break
else:
flag += i
print flag
3)网鼎杯朱雀组试题脚本:
c='kgws'
m='flag'
for i in range (1,27):
for j in range(1,27):
if 'k'==chr((i*(ord("f")-ord('a'))+j)%26+ord('a')) and 'g'==chr((i*(ord("l")-ord('a'))+j)%26+ord('a')) and 'w'==chr((i*(ord("a")-ord('a'))+j)%26+ord('a')):
print i,j
a=8
b=22
flag=''
c='kgws{m8u8cm65-ue9k-44k5-8361-we225m76eeww}'
for i in c:
if ord(i)>=ord("a") and ord(i)<ord("z"):
for j in range(0, 26):
if i==chr((a * j+ b) % 26+ord('a')):
flag += chr(j+ord('a'))
break
else:
flag+=i
print flag