Ejemplo n.º 1
0
    def encrypt(text, key):
        e, n = key
        output = []
        for char in text:
            temp = fast_exponentiation(ord(char), e, n)
            output.append(temp)

        return ":".join(map(str, output))
Ejemplo n.º 2
0
    def keygen(self):
        self.prime = get_prime(start=10, end=15)
        self.root = find_root(self.prime)

        self.k_pri = randint(2, self.prime-2)
        self.k_pub = fast_exponentiation(self.root, self.k_pri, self.prime)

        return {"pub":self.k_pub,"prime": self.prime,"root": self.root}
Ejemplo n.º 3
0
    def decrypt(text, key):
        cipher = list(map(int, text.split(":")))
        d, n = key
        output = []
        for val in cipher:
            temp = fast_exponentiation(val, d, n)
            output.append(chr(temp))

        return "".join(output)
Ejemplo n.º 4
0
 def encrypt(self, message, key):
     if message is None:
         print("Invalid Message")
         exit(0)
     if key is None:
         print("Invalid key")
         exit(0)
     #Generate Public Mask
     temp_key  = randint(2, key["prime"]-2)
     k_pub = fast_exponentiation(key["root"], temp_key, key["prime"])
     mask = fast_exponentiation(key["pub"], temp_key, key["prime"])
     output = []
     for char in message:
         y = (ord(char)*mask) % key["prime"]
         output.append(y)
     output = ":".join(map(str, output))
     print("User: {}\nPublic Key: {}\nMessage: {}\n".format(self.name, k_pub, output))
     return output, k_pub
Ejemplo n.º 5
0
 def decrypt(self, cipher, pub_key):
     if cipher is None:
         print("Invalid Message")
         exit(0)
     if pub_key is None:
         exit(0)
     #Generate Public Mask
     maskinv = fast_exponentiation(pub_key, self.prime-1-self.k_pri, self.prime)
     output = []
     for ichar in cipher.split(":"):
         y = (int(ichar) * maskinv) % self.prime 
         output.append(chr(y))
     output = "".join(output)
     print("User: {}\nPublic Key: {}\nMessage: {}\n".format(self.name, self.k_pub, output))
Ejemplo n.º 6
0
 def exchange(self, public):
     self.result = fast_exponentiation(public, self.k_pri, self.prime)
     print(self)
Ejemplo n.º 7
0
 def generate_key(prime, root):
     k_pri = randint(2, prime - 2)
     k_pub = fast_exponentiation(root, k_pri, prime)
     return {"pub": k_pub, "pri": k_pri}