pwnthebox Affine

这篇博客介绍了放射密码(Affine Cipher)的加密与解密原理,通过Python脚本展示了如何利用gmpy2库找到密钥并解密给定的密文。文章详细解释了加密公式和解密公式,并提供了自动化解密的代码示例,最终成功还原了隐藏的flag。
摘要由CSDN通过智能技术生成

拿到题目以为是一般的变异凯斯其实不是这样的,题目中有提示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都是一样的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值