Skip to content

Primes Part 1

1. Factoring

from factordb.factordb import FactorDB
N = 510143758735509025530880200653196460532653147
f = FactorDB(N)
f.connect()
print(f.get_factor_list())

2. Inferius Prime

from factordb.factordb import FactorDB
from Crypto.Util.number import inverse, long_to_bytes

N = 984994081290620368062168960884976209711107645166770780785733
f = FactorDB(N)
f.connect()
p,q = f.get_factor_list()
# print(p,q)

phi = (p-1)*(q-1)
e = 0x10001
d = inverse(e, phi)
ct = 948553474947320504624302879933619818331484350431616834086273
pt = long_to_bytes(pow(ct, d, N))
print(pt)

3. Monoprime

from Crypto.Util.number import inverse, long_to_bytes

with open("output.txt", "r") as f:
    n = int(f.readline().split()[-1])
    e = int(f.readline().split()[-1])
    c = int(f.readline().split()[-1])
    phi = n-1
    d = inverse(e, phi)
    m = pow(c, d, n)
    print(long_to_bytes(m))

4. Square Eyes

from Crypto.Util.number import inverse, long_to_bytes
from math import isqrt
with open("output.txt", "r") as f:
    n = int(f.readline().split()[-1])
    e = int(f.readline().split()[-1])
    c = int(f.readline().split()[-1])

    p = isqrt(n)
    # print(p)
    phi = p*(p-1)
    d = inverse(e, phi)
    m = pow(c, d, n)
    print(long_to_bytes(m))

5. Manyprime

from Crypto.Util.number import inverse, long_to_bytes
from math import prod
from factordb.factordb import FactorDB

with open("output.txt", "r") as f:
    n = int(f.readline().split()[-1])
    e = int(f.readline().split()[-1])
    c = int(f.readline().split()[-1])

    fdb = FactorDB(n)
    fdb.connect()
    phi = prod(x-1 for x in fdb.get_factor_list())

    d = inverse(e,phi)
    m = pow(c, d, n)
    print(long_to_bytes(m))