Beispiel #1
0
def get_factors(n):
    """Get prime factorizatio of 'n'

    Output:
    pi [List<int>] -- list of prime factors
    ei [List<int>] -- exponent of each prime factors
    """
    f = Factorizer()
    factors = f.factorize(n)
    lenfac = len(factors)
    pi, ei = [], []
    i = 0
    while i < lenfac:
        current = factors[i]
        count = 0
        while i < lenfac and current == factors[i]:
            count += 1
            i += 1
        pi.append(current)
        ei.append(count)
    return pi, ei
Beispiel #2
0
def handle_rsa(args):
    if args.action == "common":
        pk1 = PrivKey(args.n, args.e[0])
        pk2 = PrivKey(args.n, args.e[1])
        return common_modulus(pk1, pk2, args.c[0], args.c[1])
    elif args.action == "eroot":
        plainmpz = gmpy2.iroot(gmpy2.mpz(args.c), args.e)
        return hex_to_str(plainmpz[0])
    elif args.action == "hastad":
        pks, cs = [], []
        for i in range(args.e):
            pks.append(PubKey(args.n[i], args.e))
            cs.append(args.c[i])
        return hastad(pks, cs)
    elif args.action == "wiener":
        pubk = PubKey(args.n, args.e)
        _, _, d = wiener(pubk)
        priv = PrivKey(args.n, d)
        return priv.decrypt(args.c)
    elif args.action == "crack":
        f = Factorizer(Algo[args.algo], args.limit)
        pq = f.factorize(args.n)
        r = RSA(pq[0], pq[1], args.e)
        pub, priv = r.gen_keys()
        return priv.decrypt(args.c)
    elif args.action == "decrypt":
        priv = PrivKey(args.n, args.d)
        return priv.decrypt(args.c)
    elif args.action == "decrypt-pq":
        r = RSA(args.p, args.q, args.e)
        pub, priv = r.gen_keys()
        return priv.decrypt(args.c)
    elif args.action == "encrypt":
        pub = PubKey(args.n, args.e)
        return pub.encrypt(args.m.encode())
    elif args.action == "encrypt-pq":
        r = RSA(args.p, args.q, args.e)
        pub, priv = r.gen_keys()
        return pub.encrypt(args.m.encode())
Beispiel #3
0
def handle_factorize(args):
    f = Factorizer(Algo[args.algo], args.limit)
    return f.factorize(args.n)
Beispiel #4
0
 def setUp(self):
     self.f = Factorizer()
Beispiel #5
0
 def setUp(self):
     self.f = Factorizer(Algo.FERMAT, 100)
Beispiel #6
0
 def setUp(self):
     self.f = Factorizer(Algo.SMALL_PRIMES, 100)
Beispiel #7
0
 def setUp(self):
     self.f = Factorizer(Algo.FACTORDB)
Beispiel #8
0
 def setUp(self):
     self.f = Factorizer(Algo.MERSENNE)