攻防世界 crypto baigeiRSA(libnum函数)

打开压缩包发现是rsa解密

根据题目求M

找在线网站factordb.com对n进行处理

得到p= 274539690398523616505159415195049044439

        q= 322368694010594584041053487661458382819

         phi=(p-1)*(q-1)

根据原代码写代码

import libnum
import gmpy2
p = 274539690398523616505159415195049044439
q = 322368694010594584041053487661458382819
n = 88503001447845031603457048661635807319447136634748350130947825183012205093541
c = 40876621398366534035989065383910105526025410999058860023908252093679681817257
e = 65537

phi=(p-1)*(q-1)
d = int(gmpy2.invert(e,phi))
m = pow(c, d, n)
flag = libnum.n2s(m)

print(flag)

运行得到

HSCTF{@Zh3n_Ba1_G3i!@}

libnum函数

libnum 是一个在密码学和数学计算中常用的Python库,它提供了一系列实用的函数,特别是与数论、大数操作和加密相关的函数。然而,需要注意的是,libnum 并不是一个官方标准库,而是一个由社区开发的第三方库。

libnum 库中,确实存在一些函数可以帮助进行密码学相关的计算,比如RSA加密和解密过程中可能会用到的模幂运算、大数取逆等。但是,具体到“libnum函数”这个表述,它非常宽泛,因为 libnum 包含了多个函数。

以下是一些 libnum 库中可能会用到的函数类型的示例(请注意,具体的函数名和可用性可能会随着 libnum 版本的更新而发生变化):

  1. 大数运算libnum 提供了用于大数运算的函数,这些函数可以处理Python内置数据类型无法直接处理的大整数。
  2. 模幂运算:在进行RSA加密和解密时,经常需要计算 a^b mod n,其中 abn 是大整数。libnum 可能提供了直接的函数来执行这种运算,尽管Python的内置类型也支持大数的模幂运算(使用 pow(a, b, n))。
  3. 大数取逆:在RSA解密过程中,需要计算公钥指数 e 关于欧拉函数 phi(n) 的模逆元 d。虽然 gmpy2 通常用于这类计算,但 libnum 也可能提供了类似的函数。
  4. 编码和解码:虽然 libnum 不直接提供从加密后的大整数转换回原始字符串的“一键式”函数,但它可能提供了与编码和解码相关的函数,这些函数可以用于处理加密前后的数据。
  5. 数学函数libnum 还可能包含一些标准的数学函数,如素数测试、最大公约数(GCD)计算等,这些在密码学应用中也很常见。

然而,需要强调的是,libnum 的具体函数集和API可能会随着版本的更新而发生变化。因此,如果你打算使用 libnum,最好的做法是查阅最新的文档或源代码来获取准确的信息。

另外,请注意,libnum 可能不是处理RSA加密和解密的唯一或最佳选择。Python的 CryptoPyCryptodome 库提供了更完整和经过充分测试的加密功能,包括RSA加密和解密。如果你正在寻找一个成熟的、广泛使用的加密库,那么这些库可能是更好的选择。

数学运算函数

  • 模幂运算:这类函数通常用于执行形如a^b mod n的模幂运算,这是加密算法(如RSA)中常见的操作。Python的内置pow函数已经支持这种运算,但libnum可能提供了更高效的实现或额外的功能。
  • 高精度整数运算:由于Python的内置整数类型已经支持高精度运算,但libnum可能提供了额外的函数来处理特定的高精度整数运算需求。

编码和解码函数

  • 字符串与数字转换
    • s2n:将字符串(通常是十六进制或二进制字符串)转换为对应的数字(十进制)。
    • n2s:将数字(十进制)转换回对应的字符串(十六进制或二进制,具体取决于实现)。需要注意的是,n2s可能不是libnum库中直接提供的函数名,因为将数字转换回字符串时,通常需要指定目标编码(如十六进制、二进制或ASCII)。然而,libnum可能提供了类似的功能,但函数名可能有所不同。
  • 二进制转换
    • s2b:将字符串转换为二进制表示。
    • b2s:将二进制数据转换回字符串。

素数及因数分解函数

  • 素数生成:生成指定长度的伪素数或随机素数。这类函数在加密算法(如RSA)的密钥生成过程中非常有用。
  • 素数测试:判断一个数是否为素数。
  • 因数分解:将一个正整数分解为素因子的乘积。这在密码分析和某些加密算法中非常重要。

其他函数

  • 模逆元计算:在模运算下,计算一个数的乘法逆元。这在RSA解密过程中特别有用。
  • ECC(椭圆曲线密码学)相关函数:虽然libnum库主要关注RSA等基于大数分解的加密算法,但它也可能提供了一些与椭圆曲线密码学相关的函数,尽管这部分功能可能不如专门的ECC库那么全面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值