Saltar al contenido principal

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.