首页 > 其他分享 >Crypto|[BJDCTF2020]easyrsa

Crypto|[BJDCTF2020]easyrsa

时间:2023-05-06 14:36:09浏览次数:41  
标签:easyrsa frac libnum getPrime Crypto Fraction import Derivative BJDCTF2020

rsa_task.py

from Crypto.Util.number import getPrime,bytes_to_long
from sympy import Derivative
from fractions import Fraction
from secret import flag

p=getPrime(1024)
q=getPrime(1024)
e=65537
n=p*q
z=Fraction(1,Derivative(arctan(p),p))-Fraction(1,Derivative(arth(q),q))
m=bytes_to_long(flag)
c=pow(m,e,n)
print(c,z,n)
'''
output:
7922547866857761459807491502654216283012776177789511549350672958101810281348402284098310147796549430689253803510994877420135537268549410652654479620858691324110367182025648788407041599943091386227543182157746202947099572389676084392706406084307657000104665696654409155006313203957292885743791715198781974205578654792123191584957665293208390453748369182333152809882312453359706147808198922916762773721726681588977103877454119043744889164529383188077499194932909643918696646876907327364751380953182517883134591810800848971719184808713694342985458103006676013451912221080252735948993692674899399826084848622145815461035
32115748677623209667471622872185275070257924766015020072805267359839059393284316595882933372289732127274076434587519333300142473010344694803885168557548801202495933226215437763329280242113556524498457559562872900811602056944423967403777623306961880757613246328729616643032628964072931272085866928045973799374711846825157781056965164178505232524245809179235607571567174228822561697888645968559343608375331988097157145264357626738141646556353500994924115875748198318036296898604097000938272195903056733565880150540275369239637793975923329598716003350308259321436752579291000355560431542229699759955141152914708362494482
15310745161336895413406690009324766200789179248896951942047235448901612351128459309145825547569298479821101249094161867207686537607047447968708758990950136380924747359052570549594098569970632854351825950729752563502284849263730127586382522703959893392329333760927637353052250274195821469023401443841395096410231843592101426591882573405934188675124326997277775238287928403743324297705151732524641213516306585297722190780088180705070359469719869343939106529204798285957516860774384001892777525916167743272419958572055332232056095979448155082465977781482598371994798871917514767508394730447974770329967681767625495394441

'''

解析

已知c, z, n, e的值
求d即可求得m,所以最后需要求得p和q的
p和q可以由z求得
z=Fraction(1,Derivative(arctan(p),p))-Fraction(1,Derivative(arth(q),q))

标签:easyrsa,frac,libnum,getPrime,Crypto,Fraction,import,Derivative,BJDCTF2020
From: https://www.cnblogs.com/scarecr0w7/p/17377212.html

相关文章

  • Crypto|[BJDCTF2020]RSA
    task.pyfromCrypto.Util.numberimportgetPrime,bytes_to_longflag=open("flag","rb").read()p=getPrime(1024)q=getPrime(1024)assert(e<100000)n=p*qm=bytes_to_long(flag)c=pow(m,e,n)printc,nprintpow(294,e,n)p=getPrime(1024)......
  • Crypto|[NPUCTF2020]EzRSA
    attachment.pyfromgmpy2importlcm,powmod,invert,gcd,mpzfromCrypto.Util.numberimportgetPrimefromsympyimportnextprimefromrandomimportrandintp=getPrime(1024)q=getPrime(1024)n=p*qgift=lcm(p-1,q-1)e=54722flag=b&#......
  • Crypto|[GWCTF 2019]BabyRSA
    encrypt.pyimporthashlibimportsympyfromCrypto.Util.numberimport*flag='GWHT{******}'secret='******'assert(len(flag)==38)half=len(flag)/2flag1=flag[:half]flag2=flag[half:]secret_num=getPrime(1024)*byt......
  • Crypto|[NCTF2019]babyRSA
    task.pyfromCrypto.Util.numberimport*fromflagimportflagdefnextPrime(n):n+=2ifn&1else1whilenotisPrime(n):n+=2returnnp=getPrime(1024)q=nextPrime(p)n=p*qe=0x10001d=inverse(e,(p-1)*(q-1))......
  • Crypto|[AFCTF2018]可怜的RSA
    public.key-----BEGINPUBLICKEY-----MIIBJDANBgkqhkiG9w0BAQEFAAOCAREAMIIBDAKCAQMlsYv184kJfRcjeGa7Uc/43pIkU3SevEA7CZXJfA44bUbBYcrf93xphg2uR5HCFM+Eh6qqnybpIKl3g0kGA4rvtcMIJ9/PP8npdpVE+U4Hzf4IcgOaOmJiEWZ4smH7LWudMlOekqFTs2dWKbqzlC59NeMPfu9avxxQ15fQzIjhvc......
  • cryptohack wp day(3)
    第二节模运算----第一题(GCD)在做这道题前,了解下欧几里得算法:欧几里得算法,也叫辗转相除法,用于求解两个非负整数a和b的最大公约数(GreatestCommonDivisor,GCD),即能够同时整除它们的最大正整数。算法的基本思想是,通过不断求解a和b的余数的最大公约数,最终可以得到a和b的最大公约......
  • cryptohack wp day (2)
    接着昨天的题目第五题看题目,一道简单的xor题,就是将“label中每个字符与13进行异或处理”,直接上代码:s="label"result=""foriins:result+=chr(ord(i)^13)print(result)或者按照题目所说,用pwntools库中的xor函数来进行异或操作,具体操作如下:frompwnimportxor......
  • cryptohack wp day(1)
    就从头开始吧第一题(ASCII)一道简单的ASCII码转换,直接用题目的提示代码解就行了ascii=[99,114,121,112,116,111,123,65,83,67,73,73,95,112,114,49,110,116,52,98,108,51,125]flag=""foriinascii:flag+=chr(i)print(flag)第二题(Hex)......
  • 安装pycrypto
    下载地址:https://www.dlitz.net/software/pycrypto/在BT5上安装:root@bt:~#easy_installpycrypto-2.6.tar.gzProcessingpycrypto-2.6.tar.gzWriting/tmp/easy_install-bRS9dY/pycrypto-2.6/setup.cfgRunningpycrypto-2.6/setup.py-qbdist_egg--dist-dir/tmp/easy_insta......
  • 前端使用CryptoJS加密解密
    1、安装crypto-js;npminstallcrypto-js--save-devyarnaddcrypto-js--dev2、新建unit.js写成公共方法;constCryptoJS=require('crypto-js');//16位十六进制数作为密钥(秘钥为随机生成,必须与后端保持一致!)constkey=CryptoJS.enc.Utf8.parse("xxxxxxxxxxxxxx");//......