攻防世界GFSJ1195 DDH_Game

《备考系统分析师》 - 专栏介绍和目录 本专栏提供软考高级系统分析师全套备考资料,包含四大核心内容:1.详细考点梳理(覆盖基础知识、关键技术、案例实践三大模块16个章节);2.历年真题及解析(2009-2022年所有真题含综合知识、案例分析和论文);3.100+篇高质量论文范文;4.预测模拟题。早鸟价仅需9.9元,可节约80%资料搜集时间,帮助考生高效备考、顺利通过考试。专栏持续更新,有问题可随时联系作者。 阅读详情

题目编号:GFSJ1195

附件下载后是一个txt文件和一个sage文件(python):

1. 分析代码(.sage文件),已添加详细注释

# 从 secret 模块导入 flag 变量
from secret import flag
from Crypto.Util.number import bytes_to_long
from Crypto.Util.number import getRandomRange

# 确保 flag 符合特定格式,以 'CatCTF{' 开头并以 '}' 结尾
assert flag.startswith(b'CatCTF{')
assert flag.endswith(b'}')

# 定义使用自定义生成元 G 的 BLS-12-381 椭圆曲线
# p 是素数,定义了有限域 GF(p)
p = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab
K = GF(p)  # 定义有限域 GF(p)
a = K(0x00)  # 椭圆曲线的参数 a
b = K(0x04)  # 椭圆曲线的参数 b
E = EllipticCurve(K, (a, b))  # 使用参数 a 和 b 定义椭圆曲线 E
# 设置椭圆曲线的阶(曲线上的点的总数)
E.set_order(0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001 * 0x396C8C005555E1568C00AAAB0000AAAB)

# 定义生成元 G 的坐标
G = E(
    3745324820672390389968901155878445437664963280229755729082200523555105705468830220374025474630687037635107257976475,
    2578846078515277795052385204310204126349387494123866919108681393764788346607753607675088305233984015170544920715533
)
n = G.order()  # 生成元 G 的阶

# 定义曲线的嵌入度 k = 12
k = 12

# 将 flag(去掉前后标识部分)转为整数 m
m = Integer(bytes_to_long(flag[7:-1]))
# 获取 m 的位序列表示,用于生成 Diffie-Hellman 问题实例
sols = m.bits()

# 定义一个列表来存储 Diffie-Hellman 问题实例
DDH_instances = []

# 遍历位序列,生成 DDH 问题实例
for i in range(len(sols)):
    a = getRandomRange(1, n)  # 随机生成 a
    b = getRandomRange(1, n)  # 随机生成 b
    c = 0  # 初始化 c
    
    # 如果 sols[i] 为 True,将 c 设置为 a*b mod n
    if sols[i] == True:
        c = a * b % n
    # 如果 sols[i] 为 False,将 c 设置为随机数,并确保 a*b*G ≠ c*G
    elif sols[i] == False:
        c = getRandomRange(1, n)
        assert a * b * G != c * G  # 验证生成的 (a, b, c) 满足非等式

    # 将 (a*G, b*G, c*G) 的坐标对添加到 DDH 实例列表中
    ins = ((a * G).xy(), (b * G).xy(), (c * G).xy())
    DDH_instances.append(ins)

# 将生成的 DDH 实例写入文件 'DDH_instances.txt'
with open('DDH_instances.txt', 'w') as f:
    f.write(str(DDH_instances))

2. 通过阅读源码及DDH的提示,求解椭圆曲线离散对数问题(ECDLP)

两个方案解决:

  • 方案1:基于配对的方式,通过 Tate 配对计算点的相等性来验证每个实例。对 DDH 实例中的点进行 Tate 配对比较,如果配对结果相等,说明满足条件,输出为1,否则为0。
  • 方案2:使用 Pohlig-Hellman 离散对数算法,通过计算每个点相对于生成元的离散对数,然后利用这些对数的乘积关系判断比特值。这种方式更依赖于离散对数计算,且适用于因数分解已知的阶数。

3. 方案1(Tate 配对)代码:

# 使用 SageMath 9.5
from Crypto.Util.number import long_to_bytes  # 从 Crypto 库导入 long_to_bytes 函数,用于将长整数转换为字节形式

# 在运行前,修改文件名,并在文件开头添加 "DDH_instances = " ,以便加载 DDH 实例数据
load('../GFSJ/GFSJ1195/DDH_instances.sage')  # 加载包含 DDH 实例的文件

# 定义椭圆曲线参数
p = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab  # 大素数 p,用于有限域 GF(p)
K = GF(p)  # 定义有限域 GF(p)
a = K(0x00)  # 椭圆曲线的参数 a
b = K(0x04)  # 椭圆曲线的参数 b
E = EllipticCurve(K, (a, b))  # 定义椭圆曲线 E,使用有限域 K 和参数 (a, b)

# 设置椭圆曲线的阶(曲线上所有点的数量)
E.set_order(0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001 * 0x396C8C005555E
【短距离通信】【WiFi】精讲802.11n/ac/ax mpdu和ampdu最大长度 在 Wi-Fi 标准(802.11n、802.11ac 和 802.11ax)中,和是数据传输的核心概念。理解它们各自的作用以及不同标准下的最大长度限制,有助于深入了解 Wi-Fi 的性能优化机制。以下是对802.11n802.11ac和802.11ax中MPDU和A-MPDU最大长度的详细技术分析和对比。1. MPDU 和 A-MPDU 的基本概念MPDU 是经过 MAC 层处理后的数据单元,主要由MAC层数据帧和物理层的传输头部(PHY headers)组成。 阅读详情

相关推荐

ZYNQ专题-7020驱动KSZ9031 PHY芯片

之所以有这篇文章,得益于Alinx的开发板。

Anitawen的博客 4970

资治通鉴:文言文、白话文对照读本

介绍一处可以免费下载资治通鉴的网址,该文献共20卷,排版为左边是文言文,右边是白话文翻译,对照阅读非常方便。下面是1-20卷的链接地址:第一卷:http://www.docin.com/p-9705067.html 第二卷:http://www.docin.com/p-9705979.html 第三卷:http://www.docin.com/p-9709382.html 第四卷:

aiwis的专栏 2548

SAP 财务接口开发:完全清账 vs 标准过账的 CO-PA(获利能力字段) 赋值全解析(含设计哲学)

用于完全清账场景:用于标准凭证过账/部分清账两者对 CO-PA 数据的传递方式截然不同。本文不仅提供完整的代码实现,更深入解析为什么 SAP 要这样设计——了解设计哲学,才能灵活应对各类需求。完全清账→ 调用,必须在T_FTPOST中传递,其他特征用BSEG-RKE_前缀。标准过账/部分清账→ 调用,在CRITERIA表中传递特征,字段名直接用WERKSARTNR等。SAP 的设计智慧面向不同场景,采用不同机制,各司其职。通过接口抽象,将复杂的 CO-PA 配置逻辑封装在内部,对外提供简洁的调用方式。

Pegasus666的博客 329

【Cubietruck】Qt5.8.0 x64、x86、armhf三个版本的编译安装

一、       Preparation 以下环境配置支持虚拟机和实体机,但是实体机生产效率会相对高一点,实体机编译Qt的速度是虚拟机两倍以上。 若使用虚拟机,推荐使用VirtualBox,开源免费,尽量不要使用Vmware破解版。   Download List   名称 链接 下载项目 OS https://mirro

beatfan的博客 3658

深入C6678启动流程:从BootRom参数表到多核镜像部署的完整解析

本文深入解析TMS320C6678 DSP的启动流程,从BootRom参数表到多核镜像部署的全过程。详细介绍了七种启动模式的工程选择、多核镜像构建技巧以及二级引导策略,帮助开发者掌握C6678的启动机制与调试方法,提升嵌入式系统开发效率。

weixin_30505225的博客 613

ABtest描述统计功效

我们在面试数据分析时,常常会问到如何确定样本量的问题,会有一个指标:统计功效(power),或者是1-β 统计功效会影响实验的可信度,甚至会影响实验所需的样本量,要了解统计功效,首先要理解两类统计错误 假如我们做了一个AB实验,且两组用户的数据均值为μ1和μ2,我们会有两个初始假设: H0:两个实验组的数据没有差别(μ1=μ2),这个假设也叫“零假设”,也叫原假设 H1:两个实验组之间的数据存在差别(μ1≠μ2),这个假设也叫“非零假设”,也叫备择假设 定义两类错误: 实验本身没有效应,但我们觉

qq_38134556的博客 904

Unity 之jenkins自动打包

1.Jenkins 是什么? jenkins官方网址:https://www.jenkins.io/zh/ Jenkins是一款开源 CI&CD(持续集成&持续部署) 软件,用于自动化各种任务,包括构建、测试和部署软件。 简易安装:Jenkins 是一个基于 Java 的独立程序,可以立即运行,包含 Windows、Mac OS X 和其他类 Unix 操作系统。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。 插件扩展:通过更新中心中的

TxNet 2138

激光雷达与相机时间戳同步:原理、触发方案与工程实现

目录一、引言:时间不同步,多传感器融合必出问题二、核心原理:相机成像机制与触发模式(同步的基础)2.1 相机成像的两个核心阶段:曝光与读出(1)非交叠曝光(2)交叠曝光2.2 相机触发模式:内触发 vs 外触发(1)内触发(2)外触发2.3 关键信号:Strobe信号与预输出(同步的核心技巧)三、三种主流时间戳同步方案(工程落地首选)3.1 方案一:统一硬触发(精度最高,高端场景首选)核心原理核心配置要点优缺点适用场景3.2 方案二:软触发+硬触发(Strobe预输出,车载量产首选)核心原理核心配置要点优缺

getusushu的博客 205

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 提升Claude思维能力的提示词分析
下一篇: 攻防世界GFSJ1193 cat_theory
铭记北宸
博客等级 码龄18年 289粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭记北宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值