Skip to content

Instantly share code, notes, and snippets.

@HectorSaldes
Created October 14, 2021 06:00
Show Gist options
  • Save HectorSaldes/39156cec871718dd104e98345d1ae68a to your computer and use it in GitHub Desktop.
Save HectorSaldes/39156cec871718dd104e98345d1ae68a to your computer and use it in GitHub Desktop.
[Criptografía] - Archivo principal para la ejecución del código
"""
? 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