Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
En este Instructable, le mostraré cómo con un Python simple, puede mantener sus archivos seguros usando AES estándar de la industria.
Requerimientos:
- Python 3.7
- Biblioteca PyAesCrypt
- biblioteca hashlib
Si no tiene estas bibliotecas, puede instalarlas fácilmente escribiendo:
pip3 instalar hashlib
pip3 instalar PyAesCrypt
en la terminal (o CMD)
Ya deberías tener estos:
- biblioteca aleatoria
- biblioteca del sistema operativo
- biblioteca del sistema
Estoy usando OS X, pero no debería importar demasiado, excepto por la dirección de las barras en las rutas de los archivos (OS X: /, Windows:)
Tenga en cuenta: debido a algún problema técnico, las sangrías en el código no se muestran por alguna razón. En consecuencia, no habrá sangrías en el código mostrado, sin embargo, están presentes en los archivos de Python que he adjuntado al final y en las imágenes adjuntas. Simplemente no tome el código directamente del texto mostrado, porque no funcionará debido a la falta de sangrías
Si tiene todas las dependencias instaladas, pasemos al Paso 1.
Paso 1: escribir el archivo de configuración
Uno de los factores que hace que esto sea tan seguro es el uso de hash para verificar la contraseña. El archivo de configuración (estoy llamando al mío setupsafe.py) va a:
- Cree una carpeta y archivos ficticios para la contraseña
- Establecer la contraseña
- Establecer el número de archivo
- Hash la contraseña
En primer lugar, vamos a importar nuestras dependencias:
desde sys import *
importar sistema operativo
importar al azar
importar hashlib
A continuación, crearemos una carpeta para albergar el hash de la contraseña y los archivos ficticios:
intente: si no es os.path.exists ('desktop / safesetup'):
os.mkdir ('escritorio / safesetup /')
excepto OSError:
imprimir ("Error al crear la carpeta")
Este código creará una carpeta llamada safesetup (a menos que ya exista).
Después de esto, vamos a establecer la contraseña y generar un número aleatorio entre 1 y 100 como nuestra forma de navegar por los archivos ficticios:
contraseña global contraseña = argv [1].encode ('utf-8')
n = random.randint (1, 101)
Ahora que tenemos nuestra contraseña y nuestro número de archivo, vamos a crear 99 archivos ficticios dentro de safesetup, y un archivo real que contendrá nuestro hash de contraseña:
para x en el rango (101): si (x! = n):
f = abierto (("escritorio / configuración segura /" + str (x)), "w +")
f.close ()
demás:
contraseña = hashlib.sha256 (contraseña).hexdigest ()
f = abierto (("escritorio / configuración segura /" + str (x)), "w +")
f.write (contraseña)
f.close ()
imprimir (n)
El archivo real se llama cualquier número entero n. Este archivo contiene nuestra contraseña, después de haber sido hash utilizando el algoritmo sha256 (este algoritmo hash se usa ampliamente en las criptomonedas, sobre todo en Bitcoin).
Recuerde lo que es n (se imprimirá en la consola), ya que es tan importante como la contraseña.
Eso es todo lo que necesitamos para nuestro programa de instalación, por lo que ahora pasaremos al programa de cifrado / descifrado.
Paso 2: el archivo de cifrado / descifrado
La sección de configuración del archivo principal importa las dependencias, aplica un hash a la contraseña ingresada y recupera el hash de la contraseña real utilizando el número de archivo ingresado.
Primero, las dependencias:
desde sys import * import os
importar pyAesCrypt
importar hashlib
A continuación, el hash de la contraseña ingresada:
contraseña = argv [1].encode ('utf-8') contraseña = hashlib.sha256 (contraseña).hexdigest ()
Finalmente, la recuperación de contraseña hash:
file_key = str (argv [2]) hash = open (("escritorio / configuración segura /" + file_key), ("r +")). read ()
La segunda sección del archivo de cifrado compara los valores hash, determina la veracidad de la comparación y utiliza la biblioteca de Python AESCrypt para cifrar o descifrar el archivo de su elección. Este es un fragmento de código bastante grande, pero lo desglosaré:
if (contraseña == hash): print ("Contraseña aceptada")
bufferSize = 64 * 1024
operación = str (input ("¿Está recuperando o encriptando archivos? (r o e)"))
si (operación == 'r'):
file_name = str (input ("Archivo para recuperar:"))
pyAesCrypt.decryptFile ((nombre_archivo + ".aes"), nombre_archivo, contraseña, bufferSize)
os.remove ((nombre_archivo + ".aes"))
elif (operación == 'e'):
file_name = str (input ("Archivo para cifrar:"))
pyAesCrypt.encryptFile (nombre_archivo, (nombre_archivo + ".aes"), contraseña, bufferSize)
os.remove (nombre_archivo)
demás:
print ("Error: entrada incorrecta")
demás:
imprimir ("Acceso denegado")
La primera instrucción if determina si las contraseñas con hash coinciden. Si es así, continúa preguntando si desea cifrar archivos o recuperar archivos cifrados. Dependiendo de su entrada, cifrará o descifrará el archivo proporcionado. Cuando se le solicite que proporcione el nombre del archivo, asegúrese de especificar la ruta a menos que el archivo esté en el mismo directorio que el programa Python. El programa elimina el archivo en su estado anterior, reemplazándolo con un archivo.aes encriptado, o descifrándolo y reemplazándolo con el archivo original.
En el futuro, podría actualizar esto para incluir el reconocimiento facial usando la biblioteca Python OpenCV, pero por ahora las contraseñas serán suficientes.
Paso 3: Operación de archivos
Para ejecutar el archivo de instalación, siga estos pasos:
1. Escriba en la terminal:
Python3 directorio / nombredeconfiguración.py contraseña (reemplazando directorio, nombredeconfiguración y contraseña con sus respectivos valores)
2. El terminal generará su número de archivo. Guarda esto.
Para ejecutar el programa de cifrado / descifrado, siga estos pasos:
1. Escriba en la terminal:
python3 directorio / nombre de archivo.py contraseña número de archivo (reemplazando directorio, nombre de archivo, contraseña y número de archivo con sus respectivos valores)
2. El terminal aceptará o rechazará su contraseña. Si es rechazado, intente nuevamente y asegúrese de ingresar los valores correctos. Una vez que se ha concedido el acceso, el terminal le preguntará si desea cifrar un archivo o recuperar un archivo. Para cifrar un archivo, escriba e, y para recuperar un archivo cifrado, escriba r.
3. A continuación, se le pedirá que proporcione el nombre del archivo. Recuerde proporcionar el directorio del archivo, así como el nombre y también la extensión del archivo. Sin embargo, si está descifrando un archivo, no escriba la parte.aes de la extensión, ya que el código lo explica.
4. A continuación, el programa cifra o descifra el archivo proporcionado y elimina el archivo en su estado anterior (conservando el archivo cifrado o descifrado).
¡Voila! Gracias por llegar tan lejos en el instructable, sé que leer tutoriales de código no es lo más entretenido. Los archivos de Python se incluyen en este paso, para aquellos de ustedes que quieran darle una oportunidad. Una vez más, gracias por leer y les deseo la mejor de las suertes en sus futuros esfuerzos de codificación.