查看题目
恩总结不会,愉快的找wp去
这一道RSA打开加密算法乍一看感觉没有问题,N特别大,除了p和q的生成算法啥都没给,
查了一下 Crypto.Util.number 中的sieve_base,发现这是前10000个素数的生成列表,我们再去查一下第10000个素数的值为104729
不过就算我们知道了这个值的大小似乎还是得不到结果,从这个p,q的生成算法中,我们可以知道其是由小于104729的素数随机组合生成的.
为小于p的任何数的倍数,即我们可以将这10000个素数乘起来就为p-1的倍数,于是尝试用费马小定理,即是a^(t*(p-1))-1为p的倍数,t*(p-1)通过上述算法得出即可
// python2
from Crypto.Util.number import sieve_base as primes
import gmpy2
n = 328497181973375818230022437170576592185025190043869966608851005928722019488341555431259243956149289627505796673462794567106337745014072924730063125377238942217176380590587966796869535644719940092853847984504937569004592250403604308472409756784501715510487838186424675067114240278487783674273386472824286673932411571516754106610150446332820640568009132820163634152021719260892934310123792615850785663010601736893283636966998111235920902045780982767048774086885256187328488176238798996286293003857903443660466418255077677092766226928353932198112832443038998504837486517223369961647245533640970664939531271530669705946384919501996057