【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-affine

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
函数计算FC,每月15万CU 3个月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 仿射密码是一种基于数学运算的加密算法,它将明文中的每个字母通过一系列的数学变换,转化为密文中的一个字母。

前言

1.仿射密码

仿射密码是一种基于数学运算的加密算法,它将明文中的每个字母通过一系列的数学变换,转化为密文中的一个字母。

具体算法:

设明文中的一个字母为x,加密后的字母为y,加密密钥为(a, b),则仿射密码的加密公式为:

y = (ax + b) % n

其中,n为字母表的大小(通常为26),% 表示取余运算。

换算:

为了解密密文,需要求出加密密钥的逆元,然后按照逆元的公式进行解密。

设密文中的一个字母为y,解密后的字母为x,加密密钥为(a, b),则仿射密码的解密公式为:

x = a' * (y - b) % n

其中,a'为a的逆元,% 表示取余运算。

2.逆元

逆元,指在模运算下,对于给定的整数a和模数m,如果存在一个整数x,使得(a * x) % m = 1,则称x为a在模m下的逆元。逆元在密码学中有重要的作用,例如在RSA算法、ElGamal算法、椭圆曲线密码等密码算法中均有应用。

具体算法:

  1. 暴力枚举算法:枚举[0, m-1]之间所有数x,逐一验证(a * x) % m是否等于1,时间复杂度为O(m)。

  2. 扩展欧几里得算法:根据扩展欧几里得算法,可以在O(log m)的时间复杂度内求出a在模m下的逆元。具体算法步骤如下:

    (1)使用欧几里得算法求出a和m的最大公约数d,如果d不等于1,则a在模m下不存在逆元。

    (2)求出方程 ax + my = d 的一组整数解(x0, y0),可以使用扩展欧几里得算法求解。

    (3)方程 ax + my = d 的任意一组整数解(x, y) 都可以表示为(x0 + tm, y0 - tn),其中t为任意整数。

    (4)如果将等式 ax = 1 - my 代入其中,得到 x = x0 + t(m/d),由于x是a在模m下的逆元,因此x需要满足0 <= x < m。

    (5)因此,求出x = (x0 + t(m/d))%m,即为a在模m下的逆元。

简单案例:

例如,计算在模26下,字母D的逆元。由于D在字母表中是第4个字母(A为第0个字母),因此D在模26下的值为4。要求D的逆元,需要找到一个整数x,满足(4 * x) % 26 = 1。通过暴力枚举,可以验证当x等于7或者19时,满足条件。因此D在模26下的逆元为7或者19。

一、affine

1.打开题目

image.png

2.解题

ord(i)函数是Python中的一个内置函数,用于获取一个字符的ASCII码值,即字符对应的整数表示。例如,ord('a')返回数值97,ord('b')返回数值98,以此类推。

在ASCII码表中,小写字母a的ASCII码值为97,因此ord(i)-97表示将字符i转换为小写字母a的偏移量,也就是i与a之间的距离。例如,当i等于'b'时,ord(i)返回数值98,减去97后得到1,表示'b'与'a'相差1个单位。这个偏移量在密码学中常常用来进行模运算和数组索引操作。例如,在Caesar密码中,就使用了这个偏移量对明文进行加密,具体方法是将明文中的每个字母都向后移动k个单位,其中k为给定的密钥。

flag = "szzyfimhyzd"
flaglist = []#取与a位置的偏移量
for i in flag:
    flaglist.append(ord(i)-97)
flags = ""
for i in flaglist:
    for j in range(0,26):
        #计算逆元
        c = (17 * j - 8) % 26
        #偏移量=逆元
        if(c == i):
            flags += chr(j+97)
print(flags)

得到flag:flag{affineshift}

目录
相关文章
|
1月前
|
网络协议 Java 数据库连接
2023第二届陇剑杯网络安全大赛 预选赛复盘学到的一些经验
2023第二届陇剑杯网络安全大赛 预选赛复盘学到的一些经验
45 6
|
1月前
|
算法 安全 Shell
2024i春秋第四届长城杯网络安全大赛暨京津冀网络安全技能竞赛初赛wp-flowershop+easyre
2024i春秋第四届长城杯网络安全大赛暨京津冀网络安全技能竞赛初赛wp-flowershop+easyre
94 1
|
6月前
|
安全 关系型数据库 MySQL
2023 金砖国家职业技能大赛网络安全省赛二三阶段样题(金砖国家未来技能挑战赛)
2023 金砖国家职业技能大赛网络安全省赛二三阶段样题(金砖国家未来技能挑战赛)
|
6月前
|
安全 Linux 网络安全
第十六届山东省职业院校技能大赛中职组网络安全赛项竞赛正式试题
第十六届山东省职业院校技能大赛中职组网络安全赛项竞赛正式试题
|
6月前
|
网络安全 数据安全/隐私保护 XML
2024“天一永安杯“宁波第七届网络安全大赛极安云科战队部分WP
2024“天一永安杯“宁波第七届网络安全大赛极安云科战队部分WP
2024“天一永安杯“宁波第七届网络安全大赛极安云科战队部分WP
|
6月前
|
安全 网络协议 网络安全
2023 金砖国家职业技能大赛网络安全省赛理论题样题(金砖国家未来技能挑战赛)
2023 金砖国家职业技能大赛网络安全省赛理论题样题(金砖国家未来技能挑战赛)
|
6月前
|
安全 JavaScript 前端开发
第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题—B模块安全事件响应/网络安全数据取证/应用安全
该内容描述了一次网络安全演练,包括七个部分:Linux渗透提权、内存取证、页面信息发现、数字取证调查、网络安全应急响应、Python代码分析和逆向分析。参与者需在模拟环境中收集Flag值,涉及任务如获取服务器信息、提权、解析内存片段、分析网络数据包、处理代码漏洞、解码逆向操作等。每个部分都列出了若干具体任务,要求提取或生成特定信息作为Flag提交。
196 0
|
6月前
|
安全 Linux 网络安全
第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题—A模块基础设施设置/安全加固
该任务是网络安全工程师模拟实战,目标是强化A模块服务器(Windows和Linux)的安全性。任务包括:设置强密码策略,限制用户权限,如禁用命令提示符,隐藏登录用户名;实施Nginx安全策略,禁止目录浏览,限制HTTP请求,调整超时时间,降权运行;配置日志监控,设定不同日志文件大小及覆盖规则;加固SSHD, VSFTPD, IIS服务,修改SSH端口,限制root登录,调整VSFTPD和IIS设置;优化本地安全策略,禁止匿名访问,保护密码存储,控制用户登录;最后,设计防火墙规则,限制SSH枚举,防御DoS攻击,并控制DNS解析请求。所有更改需截图并附说明,按指定格式保存提交。
77 0
|
6月前
|
安全 测试技术 网络安全
2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-C安全事件响应/网络安全数据取证/应用安全
B模块涵盖安全事件响应和应用安全,包括Windows渗透测试、页面信息发现、Linux系统提权及网络安全应急响应。在Windows渗透测试中,涉及系统服务扫描、DNS信息提取、管理员密码、.docx文件名及内容、图片中单词等Flag值。页面信息发现任务包括服务器端口、主页Flag、脚本信息、登录成功信息等。Linux系统渗透需收集SSH端口号、主机名、内核版本,并实现提权获取root目录内容和密码。网络安全应急响应涉及删除后门用户、找出ssh后门时间、恢复环境变量文件、识别修改的bin文件格式及定位挖矿病毒钱包地址。
71 0
|
6月前
|
安全 Linux 网络安全
2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B-CTF夺旗与攻击
模块C和D是CTF夺旗比赛,分别侧重攻击和防御。作为渗透测试工程师,你需要在靶机(Linux/Windows)上找寻多种漏洞,如命令注入、文件上传、文件包含、远程代码执行和缓冲区溢出,以获取权限。同时,注意不能攻击裁判服务器,违者将被罚离场。提交靶机的唯一标识flag值并按规则加分。模块D中,你需要在堡垒服务器上发现并修复同样类型的漏洞,保证服务可用性,制作系统防御报告,所有截图需清晰,文件以PDF格式保存提交。
101 0