Solución al reto de programación "cifrado RSA" de overxflow en udtools/underc0de
class RSA:
   
    #initializing
    def __init__(self, p, q):
        self.p = p
        self.q = q
       
        #defining n and z to resolve ops
        self.n = p * q
        self.z = (p-1) * (q-1)
        self.e = self.z - 1
       
        """
        def _extD():
            for self.d in range(1, 100):
                if (self.e * self.d) % self.z == 1:
                    return self.d
               
            return self.d
                   
        _extD()
        """
       
        self.encoded = []
        self.decoded = []
   
    # func to extract chars from a string
    def _extChar(self, text):
        self.text = text
        if text:
            self._encode(text[0])
            self._encode(self._extChar(text[1:]))
           
           
   
    #recive a char from extChar
    def _encode(self, m):
        self.m = m
        if m:
            m = ord(m)
            c = (m ^ self.e) % self.n
            self.encoded.append(c)
       
    """    
    def _decode(self, m):
        self.m = m
        if m:
            c = (m ^ self.d) % self.n
            self.decoded.append(c)
    """

#ejemplo de uso    
obj = RSA(3, 5)
obj._extChar("hola sanko")
print obj.encoded #output: [6, 14, 2, 12, 9, 11, 12, 0, 3, 14]
He comentado las func del decode porque tiraban algunos problemas y no quiero matarme la cabeza demasiado.
Saludos
Responder

Volver a “Fuentes”