仿射密码python_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)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值