欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

仿射密码 ctf

程序员文章站 2022-07-09 12:40:58
...

仿射密码

Buuctf- Crypto-[GKCTF2020]小学生的密码学

e(x)=11x+6(mod26)

密文:welcylk

  1. 原理

改密码运用乘法逆元和模运算。az对应于025, 将明文的每个字符转为对应的数字
仿射密码 ctf

加密函数 E(x)=(a*x+b)(mod 26) a,b为**,a必须与26互质
解密函数 D(x)=a^(-1) (x-b)(mod 26) a^(-1) 为a关于26的乘法逆元

  1. 分析

已知加密函数e(x)=11x+6(mod 26)。
求出11关于26的乘法逆元19,则D(x)=19*(x-6)(mod 26)

  1. 脚本
import base64
# 求逆元
from gmpy2 import invert
x= invert(11,26) #x=19为逆元

c = 'welcylk'
m=''
for i in c:
    s = ord(i)-97
    q = chr((((s-6)*x) % 26)+97)
    m+=q

print(m)
print(base64.b64encode(m.encode('utf-8')))
  1. 答案

flag{ c29yY2VyeQ==}