Skip to main content

Biblioteca educativa de criptografia: teoria de numeros, cifrados clasicos y ataques

Project description

mi_crypto_lib

Biblioteca educativa de criptografía desarrollada en Python puro (sin dependencias externas).

Estructura

mi_crypto_lib/
├── __init__.py                  # Fachada: import mi_crypto_lib as cripto
│
├── teoria_numeros/              # Ejercicios 1–4: Teoría de números
│   ├── __init__.py
│   ├── utilidades.py            # mcd, es_primo, phi, factorizar_entero (compartido)
│   ├── crr.py                   # Ej 1: Conjunto Reducido de Residuos
│   ├── ejercicio_rsa_base.py    # Ej 2: Primos seguros para RSA
│   ├── n_generico.py            # Ej 3: Factorización y φ(n) genérico
│   └── inversos.py              # Ej 4: Inversos multiplicativos (Euler / Euclides ext.)
│
├── cifrados_clasicos/           # Ejercicios 5–6: Cifrados y criptoanálisis
│   ├── __init__.py
│   ├── auto_clave.py            # Ej 5: Cifrado Autoclave (Vigenère clave continua) + Kasiski
│   └── ataque_hill.py           # Ej 6: Cifrado Hill + ataque Gauss-Jordan
│
├── setup.py
├── pyproject.toml
├── README.md
└── LICENSE

Instalación

# Desde el directorio raíz del proyecto:
pip install -e .

Uso rápido

La librería expone todas las funciones con un solo import:

import mi_crypto_lib as cripto

# ── Ej 1: Conjunto Reducido de Residuos ──
print(cripto.calcular_crr(10))       # [1, 3, 7, 9]
print(cripto.phi(10))                # 4

# ── Ej 2: Primos seguros (RSA) ──
p = cripto.generar_primo_seguro(10)  # 11

# ── Ej 3: Factorización genérica ──
print(cripto.factorizar(60))         # {2: 2, 3: 1, 5: 1}
print(cripto.euler_phi(60))          # 16

# ── Ej 4: Inversos multiplicativos ──
print(cripto.inverso_euler(3, 26))       # {'inverso': 9, ...}
print(cripto.inverso_extendido(3, 26))   # {'inverso': 9, ...}

# ── Ej 5: Cifrado Autoclave + Kasiski ──
cifrado = cripto.cifrar_autoclave("HOLAMUNDO", "KEY")
plano   = cripto.descifrar_autoclave(cifrado, "KEY")
analisis = cripto.kasiski(cifrado)

# ── Ej 6: Ataque Hill (Gauss-Jordan) ──
clave = cripto.CifradoMatriz.recuperar_clave("TEXTO", "CIFRA", 2)

Requisitos

  • Python ≥ 3.8
  • Sin dependencias externas (solo librería estándar)

Licencia

MIT License — ver LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mi_crypto_lib-1.0.10.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mi_crypto_lib-1.0.10-py3-none-any.whl (34.0 kB view details)

Uploaded Python 3

File details

Details for the file mi_crypto_lib-1.0.10.tar.gz.

File metadata

  • Download URL: mi_crypto_lib-1.0.10.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for mi_crypto_lib-1.0.10.tar.gz
Algorithm Hash digest
SHA256 009df82ed395ff0f501730e1efc7829c34ef497c5d2ea6d2a399e6b3e7c0e74f
MD5 58e4e09f2bd7dcc41ec2fb31a6160711
BLAKE2b-256 4b9985954aa342409e8edae8d45899e5a56fe9660eb36b8222b661ebecfdd63b

See more details on using hashes here.

File details

Details for the file mi_crypto_lib-1.0.10-py3-none-any.whl.

File metadata

  • Download URL: mi_crypto_lib-1.0.10-py3-none-any.whl
  • Upload date:
  • Size: 34.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for mi_crypto_lib-1.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 fef50273e467ceba71919f28a7c69f4d4a33a7b6d0f38ce8a6325595254f738a
MD5 47b6811abd861124dfd87d44ef0643fa
BLAKE2b-256 61f9442d95153fa53835a87385fc12379b514de7cc61e6a81234990919e7af05

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page