本文主要是介绍2024青少年ctf擂台挑战赛round1-解个方程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
拿到文件,一眼rsa
用之前学校课上让写的脚本计算d
用了openssl中得到bn
#include <bits/stdc++.h>
#include <openssl/bn.h>
using namespace std;int main() {BIGNUM* e = BN_new();const char* e1 = "65537";BN_dec2bn(&e, e1);BIGNUM* p = BN_new();const char* p1 = "310156213009687457743447984426171582459";BN_dec2bn(&p, p1);BIGNUM* q = BN_new();const char* q1 = "176665284026927798395694329971348987271";BN_dec2bn(&q, q1);BN_CTX* ctx = BN_CTX_new();BIGNUM* n = BN_new();BN_mul(n, p, q, ctx);BIGNUM* num1 = BN_new();const char* strnum1 = "1";BN_dec2bn(&num1, strnum1);BIGNUM* p_1 = BN_new();BN_sub(p_1, p, num1);BIGNUM* q_1 = BN_new();BN_sub(q_1, q, num1);BIGNUM* fain = BN_new();BN_mul(fain, p_1, q_1, ctx);BIGNUM* d = BN_new();BN_mod_inverse(d, e, fain, ctx);char* d1 = BN_bn2dec(d);cout << "dec_d:" << d1 << endl;return 0;
}
用计算结果提交到网站就得到flag了
这篇关于2024青少年ctf擂台挑战赛round1-解个方程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!