Cómo desencriptar un archivo en Python
Aquí tienes un tutorial detallado paso a paso sobre cómo descifrar un archivo en Python:
Paso 1: Importar Bibliotecas Necesarias
Primero, necesitamos importar las bibliotecas necesarias para el manejo de archivos y el cifrado. En este tutorial, utilizaremos la biblioteca cryptography para el cifrado y descifrado.
from cryptography.fernet import Fernet
Paso 2: Generar o Recuperar la Clave de Cifrado
Para descifrar un archivo, necesitamos la clave de cifrado que se utilizó para cifrarlo. Si ya tienes la clave de cifrado, omite este paso. De lo contrario, puedes generar una nueva clave de cifrado utilizando el siguiente código:
def generar_clave():
clave = Fernet.generate_key()
with open("clave_cifrado.key", "wb") as archivo_clave:
archivo_clave.write(clave)
Este código genera una nueva clave de cifrado y la guarda en un archivo llamado clave_cifrado.key en formato binario.
Paso 3: Leer el Archivo Cifrado
A continuación, necesitamos leer el archivo cifrado que queremos descifrar. Asegúrate de que el archivo exista en la ubicación especificada.
def leer_archivo(nombre_archivo):
with open(nombre_archivo, "rb") as archivo:
datos_cifrados = archivo.read()
return datos_cifrados
Este código lee el contenido del archivo cifrado y lo devuelve como datos binarios.
Paso 4: Descifrar el Archivo
Ahora podemos descifrar el archivo utilizando la clave de cifrado y los datos cifrados.
def descifrar_archivo(clave, datos_cifrados):
fernet = Fernet(clave)
datos_descifrados = fernet.decrypt(datos_cifrados)
return datos_descifrados
Este código inicializa la clase Fernet con la clave de cifrado, luego descifra los datos cifrados utilizando el método decrypt.
Paso 5: Guardar los Datos Descifrados
Finalmente, podemos guardar los datos descifrados en un nuevo archivo.
def guardar_datos_descifrados(datos_descifrados, nombre_archivo_salida):
with open(nombre_archivo_salida, "wb") as archivo:
archivo.write(datos_descifrados)
Este código escribe los datos descifrados en un nuevo archivo especificado por nombre_archivo_salida.
Ejemplo Completo
Aquí tienes un ejemplo completo que reúne todos los pasos:
from cryptography.fernet import Fernet
def generar_clave():
clave = Fernet.generate_key()
with open("clave_cifrado.key", "wb") as archivo_clave:
archivo_clave.write(clave)
def leer_archivo(nombre_archivo):
with open(nombre_archivo, "rb") as archivo:
datos_cifrados = archivo.read()
return datos_cifrados
def descifrar_archivo(clave, datos_cifrados):
fernet = Fernet(clave)
datos_descifrados = fernet.decrypt(datos_cifrados)
return datos_descifrados
def guardar_datos_descifrados(datos_descifrados, nombre_archivo_salida):
with open(nombre_archivo_salida, "wb") as archivo:
archivo.write(datos_descifrados)
# Generar o recuperar la clave de cifrado
generar_clave()
# Leer el archivo cifrado
datos_cifrados = leer_archivo("archivo_cifrado.txt")
# Descifrar el archivo
with open("clave_cifrado.key", "rb") as archivo_clave:
clave = archivo_clave.read()
datos_descifrados = descifrar_archivo(clave, datos_cifrados)
# Guardar los datos descifrados
guardar_datos_descifrados(datos_descifrados, "archivo_descifrado.txt")
Asegúrate de reemplazar "archivo_cifrado.txt" con la ruta de tu archivo cifrado real, y "archivo_descifrado.txt" con el nombre deseado del archivo de salida.
¡Eso es todo! Ahora tienes un archivo descifrado utilizando la clave de cifrado proporcionada.