示例#1
0
    def encriptar(self, mensaje, N, K, llave):

        # Creamos un objeto de tipo AESCipher para poder utilizar los algoritmos de cifrado

        aes = AESCipher()
        # Generamos la contraseña clave_segura

        clave_segura = aes.sha256_numerico(llave)

        # Generamos el polinomio

        polinomio = self.generar_polinomio_zp(clave_segura, K - 1)

        # Evaluamos en los N puntos

        diccionario_evaluaciones = {}

        xs = []

        ys = []

        for i in range(0, N):

            x = self.zp.random_zp(self.campo_zp_primo)

            while (x in diccionario_evaluaciones):

                x = self.zp.random_zp(self.campo_zp_primo)

            y = polinomio.eval(x)

            diccionario_evaluaciones[x] = y

            ys.append(y)

            xs.append(x)

        # Encriptamos el menaje

        criptograma = aes.encriptar(mensaje, str(clave_segura))

        # Regresamos el criptograma y los puntos (evaluacioness)

        return (criptograma, diccionario_evaluaciones)