Tabla de contenido:

Software de cifrado / descifrado de seguridad Python: 3 pasos
Software de cifrado / descifrado de seguridad Python: 3 pasos

Video: Software de cifrado / descifrado de seguridad Python: 3 pasos

Video: Software de cifrado / descifrado de seguridad Python: 3 pasos
Video: Encriptación de Contraseñas en Python 🔐 | 3 Formas de Cifrar y Desencriptar Textos y Passwords ✅ 2024, Noviembre
Anonim
Software de cifrado / descifrado de seguridad Python
Software de cifrado / descifrado de seguridad Python
Software de cifrado / descifrado de seguridad Python
Software de cifrado / descifrado de seguridad Python

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

Escribir el archivo de configuración
Escribir el archivo de configuración
Escribir el archivo de configuración
Escribir el archivo de configuración
Escribir el archivo de configuración
Escribir el archivo de configuración
Escribir el archivo de configuración
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

El archivo de cifrado / descifrado
El archivo de cifrado / descifrado
El archivo de cifrado / descifrado
El archivo de cifrado / descifrado
El archivo de cifrado / descifrado
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.

Recomendado: