Created
October 14, 2021 06:00
-
-
Save HectorSaldes/39156cec871718dd104e98345d1ae68a to your computer and use it in GitHub Desktop.
[Criptografía] - Archivo principal para la ejecución del código
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
? Saldaña Espinoza Hector | |
* Seguridad informática | |
! 7B | |
""" | |
import Cryptography | |
import sys | |
crypto = Cryptography.Cryptography() | |
# * Esta función es la primera en ejecutarse donde pide datos al usuario para su conversión criptográfica | |
def main(): | |
lines = [] | |
while True: | |
print('\n', '-'*40, 'CRIPTOGRAFÍA', '-- Escoge una opción de abajo --', '1. Cifrar', '2. Descifrar', '3. Salir', sep="\n") | |
optionOne = valid() | |
print('\n', '-- Escoge una opción de abajo --', '1. Introducir texto', '2. Desde archivo', '3. Salir', sep="\n") | |
optionTwo = valid() | |
if(optionTwo == 1): | |
lines = readInput() | |
else: | |
lines = readFile() | |
toEncryptDecrypt(lines, optionOne, optionTwo) | |
# * Aquí se mandan a llamar a los métodos de mi clase para encriptar o desencriptar | |
def toEncryptDecrypt(lines, optionOne, optionTwo): | |
text = [] | |
for line in lines: | |
if(optionOne == 1): | |
textEncrypt = crypto.encrypt(line) | |
else: | |
textEncrypt = crypto.decrypt(line) | |
text.append(textEncrypt) | |
print('\n', '-'*10, 'Resultado', '-'*10) | |
print('DE:') | |
for i in lines: | |
print(f'- {i}') | |
print() | |
print('A:') | |
for i in text: | |
print(f'- {i}') | |
print('\n', '-- Escoge una opción de abajo --', | |
'1. Guardar resultado en un archivo de texto', '2. No guardar', '3. Salir', sep="\n") | |
confirm = valid() | |
if(confirm == 1): | |
saveFile(text) | |
else: | |
print('No hay problema.') | |
# * Esta función me permite guardar el archivo al usuario | |
def saveFile(text): | |
while True: | |
try: | |
fileName = input('¿Qué nombre le quieres poner?: ') | |
file = open(f'{fileName}.txt', 'x') | |
file.close() | |
file = open(f'{fileName}.txt', 'w') | |
for line in text: | |
file.write(f'{line}\n') | |
file.close() | |
print('\n','Archivo creado y guardado correctamente!') | |
return | |
except: | |
print('Existe un archivo con el mismo nombre, cambialo!') | |
# * Lee todo lo que se introduce desde teclado | |
def readInput(): | |
lines = [] | |
while True: | |
line = input('Escribe algo o (q/Q) para salir: ') | |
if(line == 'q' or line == 'Q'): | |
return lines | |
else: | |
lines.append(line) | |
# * Lee el archivo especificado | |
def readFile(): | |
lines = [] | |
while True: | |
try: | |
fileName = input( | |
'¿Cuál es el nombre del archivo? (q/Q) para salir: ') | |
fileName = fileName.lower() | |
if(fileName == 'q'): | |
return [] | |
else: | |
file = open(f'{fileName}.txt', 'r') | |
for line in file.readlines(): | |
line = line.strip() | |
lines.append(line) | |
file.close() | |
return lines | |
except: | |
print( | |
'Ese archivo no existe o ha ocurrido un error, intente con otro archivo') | |
# * Válida los números para las diferentes opciones | |
def valid(): | |
number = 0 | |
while True: | |
try: | |
number = int(input(': ')) | |
if(number == 3): | |
print('Adíos!') | |
break | |
elif (number > 3): | |
print('Opción no válida') | |
continue | |
else: | |
return number | |
except: | |
print('Solo números') | |
continue | |
sys.exit() | |
# * Manda a ejecutar la función principal | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment