Exemplo n.º 1
0
Arquivo: key.py Projeto: reality/PyRSA
    def generate_key(bitlength):
        e = 0
        while e == 0:
            p, q = Maths.generate_prime((int)(bitlength / 2)), \
                Maths.generate_prime((int)(bitlength / 2))
            n = p * q
            phi = ((p - 1) * (q - 1))

            # If it's not one of these might as well just restart
            if Maths.is_coprime(3, phi):
                e = 3
            elif Maths.is_coprime(17, phi):
                e = 17
            elif Maths.is_coprime(65537, phi):
                e = 65537

        gcd = Maths.extended_gcd(e, phi)
        d = (gcd[0] + phi) % phi

        private = [n, d]
        public = [n, e]

        return Key(bitlength, private, public)