攻防世界(Crypto-NO.GFSJ1112-二元一次方程组)

攻防世界:https://adworld.xctf.org.cn/

题目:二元一次方程组 (NO.GFSJ1112)

题点:RSA密码体制

题解:Python代码

import libnum

# extended euclidean algorithm
def egcd(a, b):
    if a == 0:
        return (b, 0, 1)
    else:
        g, y, x = egcd(b % a, a)
        return (g, x - (b // a) * y, y)

# modular multiplicative inverse
def modinv(a, m):
    g, x, y = egcd(a, m)
    if g != 1:
        raise Exception('modular inverse does not exist')
    else:
        return x % m

n = 5700102857084805454304483466349768960970728516788155745115335016563400814300152521175777999545445613444815936222559357974566843756936687078467221979584601
avg = 75635892913589759545076958131039534718834447688923830032758709253942408722875
c = 888629627089650993173073530112503758717074884215641346688043288414489462472394318700014742820213053802180975816089493243275025049174955385229062207064503
e = 65537
phi_n = n - 2*avg + 1 # phi(n) = (p-1)(q-1) = pq-(p+q)+1 
d = modinv(e, phi_n) # de = 1 mod phi_n, d = e^-1 mod phi_n 
m = pow(c, d, n)
print(libnum.n2s(m))

输出:

b'hsctf{Dl3F4TH3rRR4iin_AvAvA}'

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
crypto-js.js 是一种流行的 JavaScript 加密库,用于在网络开发中实现各种加密算法和安全功能。要下载 crypto-js.js,可以按照以下步骤进行操作: 1. 打开你偏好的浏览器,进入 crypto-js.js 的官方页面。你可以通过搜索引擎查找 "crypto-js.js" 并选择官方结果,或直接使用链接 https://cryptojs.gitbook.io/docs/。 2. 在官方页面上,你会看到 crypto-js.js 的文档和下载选项。向下滚动页面,找到 "Download & Installation" 部分。 3. 在 "Download & Installation" 部分,你将看到两种不同的下载选项:npm 下载和直接下载。 - 如果你正在使用包管理器(如 npm)管理你的 JavaScript 项目,可以选择 npm 下载选项,它将指导你在项目中安装 crypto-js.js 的最新版本。 - 如果你只是想下载 crypto-js.js 的 JavaScript 文件,可以选择 "Direct Download" 选项,这样你就可以获得一个压缩的 JavaScript 文件(通常为 .zip 或 .tar.gz 格式),其中包含 crypto-js.js 的所有代码。 4. 根据你的需求选择适当的下载选项,并点击相应的下载链接。 5. 下载完成后,你将获得 crypto-js.js 的压缩文件。解压文件并将其中的 crypto-js.js 文件拷贝到你的项目中。 6. 确保将 crypto-js.js 引入你的 HTML 文件或 JavaScript 文件,以便在你的代码中使用库中的加密算法和安全功能。 通过按照以上步骤下载 crypto-js.js,你将能够轻松地在你的项目中使用该库提供的强大加密功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值