1.下载附件,得到压缩包,解压得到两个文件。
import libnum
from Crypto.Util import number
from secret import flag
size = 128
e = 65537
p = number.getPrime(size)
q = number.getPrime(size)
n = p*q
m = libnum.s2n(flag)
c = pow(m, e, n)
print('n = %d' % n)
print('c = %d' % c)
n = 88503001447845031603457048661635807319447136634748350130947825183012205093541 c = 40876621398366534035989065383910105526025410999058860023908252093679681817257
2.分析过程。
根据题目得到是RSA算法。
RSA是一种常用的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。它的安全性建立在大质数分解的困难性上,可以用来实现数据的加密和数字签名。RSA算法的基本原理是将明文分成若干整数,然后用一个大质数的模来加密这些整数。具体来说,假设要加密的明文为M,那么RSA算法会用两个大质数p和q来计算出n=pq,并计算出φ(n)=(p-1)(q-1),然后选择一个大于1小于φ(n)的整数e来作为公钥,并计算出一个整数d,使得ed=1 mod φ(n),即d为e的模φ(n)的逆元,最后用公钥(n, e)来加密M。要解密,则需要用私钥(n, d)来对加密后的结果进行解密。
具体来说,加密过程如下所示:
选择两个大质数p和q,计算出n=pq,并计算出φ(n)=(p-1)(q-1)。
选择一个大于1小于φ(n)的整数e,计算出d,使得ed=1 mod φ(n)。
- 根据明文M,计算出密文C=Me mod n。
解密过程则可以使用私钥(n, d)来计算出原文M,具体来说:
输入密文C,以及私钥(n, d)。
计算出原文M=Cd mod n。
请注意,由于RSA算法依赖于大质数的分解难度,所以它的安全性并不是十分稳定。目前,对于小规模的RSA密钥,已经有多种针对性的分解方法可以破解RSA密钥,但是对于大规模的RSA密钥,还没有有效的分解方法。所以,如果要使用RSA算法,需要选择更大的密钥来保证安全性。另外,由于RSA算法的计算复杂度较高,它不太适合用于加密大量数据。通常情况下,RSA算法更多的用于数字签名的场景。
通过白给的文件中的出,以知的为n,c,e。
n=p*q,使用yafu工具。
yafu用于自动整数因式分解,在RSA中,当p、q的取值差异过大或过于相近的时候,使用yafu可以快速的把n值分解出p、q值,原理是使用Fermat方法与Pollard rho方法等。
得出p和q是分别是其中的一个:
P39 = 274539690398523616505159415195049044439
P39 = 322368694010594584041053487661458382819
3.代码介绍
libnum库 是一个关于各种数学运算的函数库。
libnum.s2n:数字转化为字符串。
number.getPrime:产生二进制数。
pow() :pow(x, y[, z])函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于 pow(x,y) %z。
4.解题
p=274539690398523616505159415195049044439
q=322368694010594584041053487661458382819
oula=(p-1)*(q-1)
print(oula)
得出结果为:
欧拉fein=88503001447845031603457048661635807318850228250339231930401612280155697666284
然后,计算d的值:
from Crypto.Util.number import *
print(inverse(65537,88503001447845031603457048661635807318850228250339231930401612280155697666284))
逆元结果:
7662328611548784798175310040223409230315031128864989272824492242208270573241
验证是否为逆元,结果为1,则是,否则反之:
所以最终为:文章来源:https://www.toymoban.com/news/detail-543808.html
最终的flag值是:文章来源地址https://www.toymoban.com/news/detail-543808.html
HSCTF{@Zh3n_Ba1_G3i!@}
到了这里,关于攻防世界-baigeiRSA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!