首页 > 其他分享 >RSA

RSA

时间:2023-12-03 11:23:24浏览次数:24  
标签:gmpy2 RSA 博客 Crypto 素数 CSDN

 

菜鸟营互助:

CTF Crypto RSA合集(新生赛难度)_历届ctf竞赛rsa题目_Cot287的博客-CSDN博客

Crypto中常用的数据类型互转方式
Crypto中常用的数据类型互转方式_long_to_bytes-CSDN博客

 

 

》。。。。。。。。。。。。。。。。。。。。。。。。题目思密达。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。》

就是现在p,q是两个素数,而且他俩在素数序列里面就是一前一后的关系。所以我们要把他俩的乘积开根号得到的结果一定是在p,q之间的一个数字,(而且一定不是素数,因为p,q就是紧邻的两个素数)。

那我们找这个开方出来的数字的下一个素数,一定是q,因此我们再让n/q就可以得到两个素数。(这是第一种方法,必须得保证两个数为素数,而且挨得很近才行,我们还会介绍第二种方法,即使有一个不是素数也可以解决

import gmpy2
from Crypto.Util.number import *

e = 0x10001  #65537
p = getPrime(1024)
  =141496660433366889270545466330850887676022290181252986045191397103716739928522902753590956836793724720660070953105031641323352138017453611886384350976562289236036625214701304137112280085936778739584096334053717138042447824758203778328083054455919029980731605325653142976625341701351792418303109603210580687643
q = gmpy2.next_prime(p)
 = 103730738863613233932113552454615445438251930136901340622818495355699378215098396222203334540607673895173625532199303565004411763049989620729049497304440802792326436749787482708498524498376590196046316601744402149268026923432411115370193130014813744392571843617183380180344564355683059281462570888232581872639
n = p * q
: 8711312672358247110555459533037283937577459870805409557871933405052448320745403067773711672692041152405675923838247248581446794757852077118400103001078740223863125428986657150901940308874225561581951004129364261828465172430566422639133414788211905791358174108139271348870540352428616194140760811383733369952409596793934432342384067441255861801138802285062718142992992879028741968577803799711624783143650615150342418332050505669920953199039761971970193069323693564015567290357856709057446452549199138116890806254422969705933700128301325712866187315462133193862065535020652970708208646672601322518582835704509616121709
print("n =",n)
m = bytes_to_long(flag.encode())
c = pow(m,e,n)#m的e次幂后除以n的余数
print("c =", c)

解题代码思密达

import gmpy2
from Crypto.Util.number import *

n = 14649512071940761295526637299115559124785876291769759641385535810496168571356390875028933662157908527898907054595131961482960199302467356648190631379274697720401554559470504824985612622685394835695867966115901784024976569320394309553109935293587085148062564681314500481394907365147112082687540360098391086714184976743558033278590993154588786124775939766047431416725457741728688637126487364728587712375561695773966767394586311222451769970033239320178997793213284313210443479640426969378574483212255956628018029837363008023768111344140167747248153597634302708520935820581465887878375715293178199822355763254571306861917
c = 12027845013546239316392609172930965416584271242308913354667016233680471230190790405734811583067266163929286181494107261515098660000911579736414996680283956326170766501669935802000154155100686665545895817739485941641910099289990601294438262123368049333984283589964986184064905792613875257151557808151252971101910091243823103407818141675466520285172900274592414845571880035970983902425078647997819177759066019180722029670490597477951055687802318789372881560617674901053734286030365059070206136368543590547536318698381100062114654273208529717439733092703250435608159570238122076785000005010026224446523393666360709957236


e = 0x10001  #65537

p = gmpy2.iroot(n,2)[0]-10000
while not isPrime(p) : p += 1
q = p + 2
while not isPrime(q) : q += 2
while p*q - n != 0 :
    p = q
    q += 2
    while not isPrime(q) : q += 2

phi = (q-1)*(p-1)
d = gmpy2.invert(e,phi)
m = gmpy2.powmod(c,d,n)

print(long_to_bytes(m))

Powmod函数和pow函数  c=pow(m,e,n):m的e次幂后除以n的余数是c

 

大佬的总结:(很有帮助)

入坑CTF——RSA解密之大素数分解和共模攻击的Python实现_ctf rsa解密_01Dr1ver的博客-CSDN博客

RSA-p和q挨得很近(费马分解)_rsa费马分解_爱码蔡蔡子的博客-CSDN博客

BUUCTF RSA题目全解4_bytes_to_long long_to_bytes-CSDN博客

CTF Crypto RSA合集(新生赛难度)_历届ctf竞赛rsa题目_Cot287的博客-CSDN博客

标签:gmpy2,RSA,博客,Crypto,素数,CSDN
From: https://www.cnblogs.com/gy-10/p/17872724.html

相关文章

  • Elastic Universal Profiling
    ElasticObservability8.10introducesthegeneralavailabilityreleaseofElasticUniversalProfiling™ andenhancementstotheElasticAIAssistantforObservability.Elastic® UniversalProfilingisawhole-system,always-on,continuousprofilingsolution......
  • RSA加密
    RSA加密算法是一种非对称加密算法,所谓非对称,就是指该算法加密和解密使用不同的密钥,即使用加密密钥进行加密、解密密钥进行解密。在RSA算法中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK......
  • C语言RsaUtil,C语言Rsa验证签名,验签----自测OK
    摘自:https://www.dandelioncloud.cn/article/details/1498198300963708930 //RsaUtil.c#include<string>usingnamespacestd;#include<stdio.h>#include<stdlib.h>#include<string.h>#include<openssl/rsa.h>#include<openss......
  • RSA 进阶 中
    数论二项式定理费马小定理基础练习[金盾信安杯2023]babyrsa题目:#!/usr/bin/envpythonfromlibnumimport*fromCrypto.Util.numberimportgetPrime,bytes_to_long,long_to_bytesfromsecretimportp1,q1,p2,q2,e,d,flag,Nfromrandomimportrandintdef......
  • offline RL | IQL:通过 sarsa 式 Q 更新避免 unseen actions
    题目:OfflineReinforcementLearningwithImplicitQ-Learning,SergeyLevine组,2022ICLR,568。pdf版本:https://arxiv.org/pdf/2110.06169.pdfhtml版本:https://ar5iv.labs.arxiv.org/html/2110.06169openreview:https://openreview.net/forum?id=68n2s9ZJWF8github:h......
  • cryptohack RSA部分
    1.Salty:此题为rsa加密中e=1的情况,由于\(ed(modphi)=1\),所以d自然是等于1的,不用分解n就解出了dfromCrypto.Util.numberimportlong_to_bytese=1k=1ct=44981230718212183604274785925793145442655465025264554046028251311164494127485n=110581795715958566206600392161360......
  • RSA趣题篇(简单型)
    1、n与p的关系题目('n=',2889900888271007666806404901384868551013961963628854756126621927990727296209229662808915292954180867608778641456412407737748446104360513313069463384479875782747171856380598947430799582224282851993287962276997297559059066938413......
  • 今天突然发现RSA对加密报文是有字数限制的TAT
    之前一直在用Hutool的RSA加密,从没碰到过字数限制问题,就也没仔细研究过RSA,hutool的好东西嘛都是开箱即用,主打一个能用就不细想(当然下面的事情说明要提升技术还是得多想想哈哈哈,不然碰到问题那是一脸懵)。结果今天在和对接方沟通时,对方对着我提供的接口文档一顿捣鼓,接口入参需要进行......
  • RSA详解
    35.RSA查看题目类型:n+e+c+p+q=m+公钥提取把两个文件后缀都改成txt(我是把第一个文件改成了flagenc.txt)明显pub.txt是一个公钥解析再用分解N得到q,p明显q,p是十进制的得到D写脚本importrsae=65537n=8693448229604811919066606200349480058890565601720302561721665405837......
  • RSA
    查看题目类型:n+e+c+p+q=me=65537p=9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483q=118748438379802970320924058486536568527609101545433809076500401......