当前位置: 首页 > article >正文

[SICTF Round4] Crypto

SignBase

交给厨子,一点魔术棒

next_prime

给了gift = n * next_prime(p) * next_prime(q) 直接来分解

#gift = p*nextp*q*nextq 
def factor(n):
    list = []
    a = iroot(n, 2)[0]
    while True:
        B2 = pow(a, 2) - n
        if is_square(B2):
            b = iroot(B2, 2)[0]
            pq = a - b
            p1q1 = a + b
            list.append([pq, p1q1])
            print(pq)
            print(p1q1)
            if len(list) == 2:
                break
        a += 1
    return list

list = factor(gift)
p = gcd(n,list[0][0])
long_to_bytes(pow(c,invert(65537,p-1),p))
#b'SICTF{f2a3af27-ad07-4fc2-9b69-a91304eee6a3}'
Smooth

从名字上看p的生成函数是用小素数生成的,最后+1,所以p-1是光滑的

def getT1ngPrime(bits):
    while True:
        n = 2
        while n.bit_length() < bits:
            n *= choice(sieve_base)
        if isPrime(n + 1):
            return n + 1

n = ...
e = ...
c = ...
a = 2
k = 2
while True:
    a = powmod(a, k, n)
    res = gcd(a-1, n)
    if res != 1 and res != n:
        q = n // res
        p = res
        print(p)
        print(q)
        break
    k += 1

long_to_bytes(pow(c,invert(e,p1-1),p1))
b'SICTF{d8af7f58-49f7-490d-be49-386b8ff16361}'
Math Cocktail

给了一个算式 k = x + pow(x,-1,M),两边乘x就得到kx=x^2+1 mod M 也就可以直接解2次方程了,出来一堆解,不过都能算出flag来

# k = x+pow(x,-1,M) => kx = x^2 + 1 mod M 
P.<x> = PolynomialRing(Zmod(M))
f = x^2 + 1 - k*x 
res = f.monic().roots(multiplicities=False)

for x in res:
    x = int(x)
    result = pow(x,n,M) + pow(x,-n,M)
    print("SICTF{"+str(result)+"}")

#SICTF{83812289150322223053501552731270409032921}


http://www.kler.cn/a/377910.html

相关文章:

  • 车载网关性能 --- GW ECU报文(message)处理机制的技术解析
  • DP动态规划(装箱问题)
  • 学习“Kotlin编程指南”笔记
  • Android获取sim卡频段信息
  • 鸿蒙学习笔记:用户登录界面
  • 智能座舱进阶-应用框架层-Handler分析
  • 简易了解Pytorch中的@ 和 * 运算符(附Demo)
  • 图优化以及如何将信息矩阵添加到残差
  • 网络编程项目之UDP聊天室
  • 【书生.浦语实战营】——入门岛
  • 【OpenSearch】机器学习(Machine Learning)神经搜索教程
  • 【Android】View的事件分发机制
  • Java项目实战II基于Spring Boot的美食烹饪互动平台的设计与实现(开发文档+数据库+源码)
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第二题
  • 解锁同城流量密码,六大实用技巧全解析
  • 勒索软件通过易受攻击的 Cyber​​Panel 实例攻击网络托管服务器
  • 探索 Spring Boot 中 Elasticsearch 的实战应用
  • Java实战项目-基于 SpringBoot+Vue 的医院管理系统
  • 在Vue中处理图片加载失败:自动替换备用图片
  • kafka实时返回浏览数据
  • 迷宫求解:探索最优路径的算法与应用
  • Java接入Hive
  • IMX6ULL裸机-汇编_反汇编_机器码
  • win10 更新npm 和 node
  • Redis系列---常见问题
  • Hadoop生态圈框架部署(一)- Linux操作系统安装及配置