import gnupg import json def firmar_y_cifrar_licencia(datos_licencia, passphrase): # Inicializar GPG gpg = gnupg.GPG() try: # Convertir los datos de la licencia a JSON datos_licencia_json = json.dumps(datos_licencia, indent=4) # Firmar los datos de la licencia firma = gpg.sign(message=datos_licencia_json, detach=False, passphrase=passphrase) if not firma: print("Error al firmar los datos.") return print("Datos firmados correctamente.") # Convertir los datos firmados a bytes datos_firmados = str(firma).encode('utf-8') # Cifrar los datos firmados cifrado = gpg.encrypt(data=datos_firmados, recipients=None, symmetric=True, passphrase=passphrase) if not cifrado: print("Error al cifrar los datos.") return # Guardar los datos cifrados en un archivo archivo_salida = 'licencia.cbs' with open(archivo_salida, 'wb') as f: f.write(cifrado.data) print(f"Datos cifrados y guardados en '{archivo_salida}' correctamente.") except Exception as e: print(f"Error al firmar y cifrar los datos: {str(e)}") # Datos de la licencia a firmar y cifrar datos_licencia = { "software": "MINDS", "version": "1.0", "license_key": "ABCD-EFGH-IJKL-MNOP", "expiry_date": "2025-06-17", "licensed_to": "USUARIO FAKE" } # Frase de paso para acceder a la clave privada y para cifrar passphrase = '172999' # Llamar a la funciĆ³n para firmar y cifrar la licencia firmar_y_cifrar_licencia(datos_licencia, passphrase)