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)