From 4052c958f3fa2f2186af8748a6ae1c4d6de5479b Mon Sep 17 00:00:00 2001 From: Paul_Luque Date: Wed, 22 May 2024 05:07:59 -0500 Subject: [PATCH 1/3] add utils --- utils.py | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 utils.py diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..31770f4 --- /dev/null +++ b/utils.py @@ -0,0 +1,77 @@ +MinusMayus = { + "a": "A", + "b": "B", + "c": "C", + "d": "D", + "e": "E", + "f": "F", + "g": "G", + "h": "H", + "i": "I", + "j": "J", + "k": "K", + "l": "L", + "m": "M", + "n": "N", + "ñ": "Ñ", + "o": "O", + "p": "P", + "q": "Q", + "r": "R", + "s": "S", + "t": "T", + "u": "U", + "v": "V", + "w": "W", + "x": "X", + "y": "Y", + "z": "Z", +} + +conversion_sintildes = { + "á": "a", + "é": "e", + "í": "i", + "ó": "o", + "ú": "u", + "Á": "A", + "É": "E", + "Í": "I", + "Ó": "O", + "Ú": "U", + "ü": "u", + "Ü": "U", +} + + +def aMayuscula(texto): + + texto_mayusculas = "" + for char in texto: + if char in MinusMayus: + texto_mayusculas += MinusMayus[char] + else: + texto_mayusculas += char + return texto_mayusculas + + +# Invertir el diccionario MinusMayus para crear MayusMinus +MayusMinus = {v: k for k, v in MinusMayus.items()} + +def aMinus(texto): + texto_minusculas = "" + for char in texto: + if char in MayusMinus: + texto_minusculas += MayusMinus[char] + else: + texto_minusculas += char + return texto_minusculas + +def eliminar_tildes(texto): + texto_sin_tildes = "" + for char in texto: + if char in conversion_sintildes: + texto_sin_tildes += conversion_sintildes[char] + else: + texto_sin_tildes += char + return texto_sin_tildes \ No newline at end of file From 15d9206a2238ad221396b2977e8d64903f61f96d Mon Sep 17 00:00:00 2001 From: Paul_Luque Date: Wed, 22 May 2024 05:08:29 -0500 Subject: [PATCH 2/3] add gitignore --- .gitignore | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..efa407c --- /dev/null +++ b/.gitignore @@ -0,0 +1,162 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ \ No newline at end of file From bcacc71edd9acea77eb93b99cd2bdfcdb028de50 Mon Sep 17 00:00:00 2001 From: Paul_Luque Date: Wed, 22 May 2024 05:08:39 -0500 Subject: [PATCH 3/3] Complete cifrado cesar --- cifradoCesar.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/cifradoCesar.py b/cifradoCesar.py index 44c57e9..19dca12 100644 --- a/cifradoCesar.py +++ b/cifradoCesar.py @@ -1,4 +1,51 @@ +import utils + # 1 ALGORITMO-------------------------------- +# Definición del alfabeto de módulo 27 +ALFABETO = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZ' +ESPACIO_TO = "" +def limpiar_caracteres(texto_plano, alfabeto=ALFABETO, espacio=ESPACIO_TO): + texto_limpio = '' + for caracter in texto_plano: + if caracter in ALFABETO: + texto_limpio += caracter + elif caracter == " ": + texto_limpio += espacio + return texto_limpio + +def preprocesado(texto): + # print(texto) + texto_sin_tildes = utils.eliminar_tildes(texto) + # print(texto_sin_tildes) + texto_mayus = utils.aMayuscula(texto_sin_tildes) + # print(texto_mayus) + texto_limpio = limpiar_caracteres(texto_mayus) + # print(texto_limpio) + return texto_limpio + + +def cifrar_texto(texto_claro, desplazamiento): + texto_preprocesado = preprocesado(texto_claro) + texto_cifrado = '' + for caracter in texto_preprocesado: + if caracter in ALFABETO: + indice_original = ALFABETO.index(caracter) + indice_cifrado = (indice_original + desplazamiento) % 27 + texto_cifrado += ALFABETO[indice_cifrado] + else: + texto_cifrado += caracter # Para caracteres no incluidos en el alfabeto + return texto_cifrado + + + +def interfaz_usuario_cifrado(): + + texto_claro = input("Ingrese el texto claro: ").strip() + desplazamiento = int(input("Desplazamiento: ")) + + texto_resultante = cifrar_texto(texto_claro, desplazamiento) + print("Texto cifrado:", texto_resultante) + # 2 Uso del algoritmo ----------------------- @@ -6,4 +53,19 @@ # 4 Verificar el cypher -# 5 Algoritmo de descrifrado \ No newline at end of file +# 5 Algoritmo de descrifrado + + +## app + + +if __name__ == "__main__": + menu = { + "1" : "Cifrado cesar", + } + + for key, val in menu.items(): + print(f"Opcion {key}: {val}") + + if(input() == "1"): + interfaz_usuario_cifrado() \ No newline at end of file