# 🚀 Cross Crypto Py 🐍🔒
   
**Encriptación híbrida segura entre Python, TypeScript y Rust (AES-GCM + RSA-OAEP)**
---
## 📌 Introducción
**Cross Crypto Py** es una librería de encriptación híbrida que combina **AES-GCM** para cifrado simétrico y **RSA-OAEP** para intercambio seguro de claves. Su ventaja clave es la **interoperabilidad total** entre Python, JavaScript/TypeScript y Rust.
> Cifra datos en un lenguaje y descífralos en otro, con soporte para JSON, objetos serializados (`dill`) y archivos binarios (`PDF`, imágenes, etc).
---
## 🛠️ Uso básico (modo JSON)
```python
from cross_crypto_py.keygen import generateRSAKeys
from cross_crypto_py.encrypt import encryptHybrid
from cross_crypto_py.decrypt import decryptHybrid
# 🔑 Generar claves RSA
keys = generateRSAKeys()
publicKey = keys["publicKey"]
privateKey = keys["privateKey"]
# 📩 Datos simples
data = { "mensaje": "Hola AcaDyne desde Python" }
# 🔒 Encriptar con modo JSON (por defecto)
encrypted = encryptHybrid(data, publicKey)
print("🛡️ Encriptado:", encrypted)
# 🔓 Desencriptar
decrypted = decryptHybrid(encrypted, privateKey)
print("✅ Desencriptado:", decrypted)
```
---
## 💡 Uso avanzado
### 🔹 Objetos complejos (`mode="dill"`)
```python
from cross_crypto_py.encrypt import encryptHybrid
from cross_crypto_py.decrypt import decryptHybrid
objeto_complejo = {"clase": MiClase(), "config": {"x": 1}}
encrypted = encryptHybrid(objeto_complejo, publicKey, mode="dill")
decrypted = decryptHybrid(encrypted, privateKey, mode="dill")
```
### 🔸 Archivos binarios (`mode="binary"`)
```python
with open("imagen.png", "rb") as f:
contenido = f.read()
encrypted = encryptHybrid(contenido, publicKey, mode="binary")
decrypted = decryptHybrid(encrypted, privateKey, mode="binary")
with open("imagen_recuperada.png", "wb") as f:
f.write(decrypted)
```
---
## 📁 Cifrado híbrido de archivos (`encryptFileHybrid`)
```python
from cross_crypto_py.file_crypto import encryptFileHybrid, decryptFileHybrid
# 🔒 Encriptar uno o varios archivos/carpetas como ZIP
encrypted = encryptFileHybrid(
paths=["datos/", "documento.pdf"],
public_key=publicKey,
save_file=True,
output_enc="datos.enc"
)
# 🔓 Desencriptar archivo .enc y extraer archivos ZIP
output_dir = decryptFileHybrid("datos.enc", privateKey)
print("Archivos restaurados en:", output_dir)
```
---
## 🧬 Modo streaming para archivos grandes
```python
# Encriptar archivo grande (streaming)
encrypted = encryptHybrid("video.mp4", publicKey, stream=True)
# Desencriptar archivo grande (streaming)
output_path = decryptHybrid(
encrypted,
privateKey,
stream=True,
decrypted_output_path="video_restaurado.mp4"
)
```
> ✅ Este modo evita cargar el archivo completo en memoria. Ideal para videos, backups, etc.
---
## 🎯 Características
| Característica | ✅ |
| --------------------------------------------- | -- |
| Encriptación híbrida AES-GCM + RSA-OAEP | ✔️ |
| RSA de 4096 bits | ✔️ |
| Interoperabilidad: Python ↔ TypeScript ↔ Rust | ✔️ |
| Soporte para objetos (`json`, `dill`) | ✔️ |
| Soporte para archivos (`binary`) | ✔️ |
| Cifrado de carpetas y múltiples archivos | ✔️ |
| Modo streaming para archivos grandes | ✔️ |
| Encriptación y desencriptación unificadas | ✔️ |
---
## 📦 Instalación
```bash
pip install cross-crypto-py
```
---
## 🌐 Ecosistema Cross-Crypto
- 🔷 [Cross Crypto Py (Python)](https://github.com/acadyne/cross-crypto-py)
- 🔾 [Cross Crypto TS (TypeScript)](https://github.com/acadyne/cross-crypto-ts)
- 🦀 [Cross Crypto RS (Rust)](https://github.com/acadyne/cross-crypto-rs)
---
## 🧪 Requisitos
- Python ≥ 3.7
- `pycryptodome`, `dill`
---
## 📄 Licencia
MIT © Jose Fabian Soltero Escobar
Raw data
{
"_id": null,
"home_page": "https://github.com/acadyne/cross-crypto-py",
"name": "cross-crypto-py",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "encryption, cryptography, security, typescript, python, rsa, aes, hybrid-encryption, cross-platform, secure-communication, data-protection, crypto, gcm, oaep",
"author": "Jose Fabian Soltero Escobar",
"author_email": "acadyne@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/42/8f/35d8c040adf2ca29301a12c9c80cf49571616d8a9cbf556e9c1ebd2f16ad/cross_crypto_py-1.1.0.tar.gz",
"platform": null,
"description": "# \ud83d\ude80 Cross Crypto Py \ud83d\udc0d\ud83d\udd12\n\n   \n\n**Encriptaci\u00f3n h\u00edbrida segura entre Python, TypeScript y Rust (AES-GCM + RSA-OAEP)**\n\n---\n\n## \ud83d\udccc Introducci\u00f3n\n\n**Cross Crypto Py** es una librer\u00eda de encriptaci\u00f3n h\u00edbrida que combina **AES-GCM** para cifrado sim\u00e9trico y **RSA-OAEP** para intercambio seguro de claves. Su ventaja clave es la **interoperabilidad total** entre Python, JavaScript/TypeScript y Rust.\n\n> Cifra datos en un lenguaje y desc\u00edfralos en otro, con soporte para JSON, objetos serializados (`dill`) y archivos binarios (`PDF`, im\u00e1genes, etc).\n\n---\n\n## \ud83d\udee0\ufe0f Uso b\u00e1sico (modo JSON)\n\n```python\nfrom cross_crypto_py.keygen import generateRSAKeys\nfrom cross_crypto_py.encrypt import encryptHybrid\nfrom cross_crypto_py.decrypt import decryptHybrid\n\n# \ud83d\udd11 Generar claves RSA\nkeys = generateRSAKeys()\npublicKey = keys[\"publicKey\"]\nprivateKey = keys[\"privateKey\"]\n\n# \ud83d\udce9 Datos simples\ndata = { \"mensaje\": \"Hola AcaDyne desde Python\" }\n\n# \ud83d\udd12 Encriptar con modo JSON (por defecto)\nencrypted = encryptHybrid(data, publicKey)\nprint(\"\ud83d\udee1\ufe0f Encriptado:\", encrypted)\n\n# \ud83d\udd13 Desencriptar\ndecrypted = decryptHybrid(encrypted, privateKey)\nprint(\"\u2705 Desencriptado:\", decrypted)\n```\n\n---\n\n## \ud83d\udca1 Uso avanzado\n\n### \ud83d\udd39 Objetos complejos (`mode=\"dill\"`)\n\n```python\nfrom cross_crypto_py.encrypt import encryptHybrid\nfrom cross_crypto_py.decrypt import decryptHybrid\n\nobjeto_complejo = {\"clase\": MiClase(), \"config\": {\"x\": 1}}\nencrypted = encryptHybrid(objeto_complejo, publicKey, mode=\"dill\")\ndecrypted = decryptHybrid(encrypted, privateKey, mode=\"dill\")\n```\n\n### \ud83d\udd38 Archivos binarios (`mode=\"binary\"`)\n\n```python\nwith open(\"imagen.png\", \"rb\") as f:\n contenido = f.read()\n\nencrypted = encryptHybrid(contenido, publicKey, mode=\"binary\")\ndecrypted = decryptHybrid(encrypted, privateKey, mode=\"binary\")\n\nwith open(\"imagen_recuperada.png\", \"wb\") as f:\n f.write(decrypted)\n```\n\n---\n\n## \ud83d\udcc1 Cifrado h\u00edbrido de archivos (`encryptFileHybrid`)\n\n```python\nfrom cross_crypto_py.file_crypto import encryptFileHybrid, decryptFileHybrid\n\n# \ud83d\udd12 Encriptar uno o varios archivos/carpetas como ZIP\nencrypted = encryptFileHybrid(\n paths=[\"datos/\", \"documento.pdf\"],\n public_key=publicKey,\n save_file=True,\n output_enc=\"datos.enc\"\n)\n\n# \ud83d\udd13 Desencriptar archivo .enc y extraer archivos ZIP\noutput_dir = decryptFileHybrid(\"datos.enc\", privateKey)\nprint(\"Archivos restaurados en:\", output_dir)\n```\n\n---\n\n## \ud83e\uddec Modo streaming para archivos grandes\n\n```python\n# Encriptar archivo grande (streaming)\nencrypted = encryptHybrid(\"video.mp4\", publicKey, stream=True)\n\n# Desencriptar archivo grande (streaming)\noutput_path = decryptHybrid(\n encrypted,\n privateKey,\n stream=True,\n decrypted_output_path=\"video_restaurado.mp4\"\n)\n```\n\n> \u2705 Este modo evita cargar el archivo completo en memoria. Ideal para videos, backups, etc.\n\n---\n\n## \ud83c\udfaf Caracter\u00edsticas\n\n| Caracter\u00edstica | \u2705 |\n| --------------------------------------------- | -- |\n| Encriptaci\u00f3n h\u00edbrida AES-GCM + RSA-OAEP | \u2714\ufe0f |\n| RSA de 4096 bits | \u2714\ufe0f |\n| Interoperabilidad: Python \u2194 TypeScript \u2194 Rust | \u2714\ufe0f |\n| Soporte para objetos (`json`, `dill`) | \u2714\ufe0f |\n| Soporte para archivos (`binary`) | \u2714\ufe0f |\n| Cifrado de carpetas y m\u00faltiples archivos | \u2714\ufe0f |\n| Modo streaming para archivos grandes | \u2714\ufe0f |\n| Encriptaci\u00f3n y desencriptaci\u00f3n unificadas | \u2714\ufe0f |\n\n---\n\n## \ud83d\udce6 Instalaci\u00f3n\n\n```bash\npip install cross-crypto-py\n```\n\n---\n\n## \ud83c\udf10 Ecosistema Cross-Crypto\n\n- \ud83d\udd37 [Cross Crypto Py (Python)](https://github.com/acadyne/cross-crypto-py)\n- \ud83d\udd3e [Cross Crypto TS (TypeScript)](https://github.com/acadyne/cross-crypto-ts)\n- \ud83e\udd80 [Cross Crypto RS (Rust)](https://github.com/acadyne/cross-crypto-rs)\n\n---\n\n## \ud83e\uddea Requisitos\n\n- Python \u2265 3.7\n- `pycryptodome`, `dill`\n\n---\n\n## \ud83d\udcc4 Licencia\n\nMIT \u00a9 Jose Fabian Soltero Escobar\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Cifrado h\u00edbrido seguro con interoperabilidad entre lenguajes como Python, TypeScript y Rust, basado en AES-GCM (256 bits) y RSA-OAEP (4096 bits)",
"version": "1.1.0",
"project_urls": {
"Documentation": "https://github.com/acadyne/cross-crypto-py#readme",
"Homepage": "https://github.com/acadyne/cross-crypto-py",
"Source": "https://github.com/acadyne/cross-crypto-py",
"Tracker": "https://github.com/acadyne/cross-crypto-py/issues"
},
"split_keywords": [
"encryption",
" cryptography",
" security",
" typescript",
" python",
" rsa",
" aes",
" hybrid-encryption",
" cross-platform",
" secure-communication",
" data-protection",
" crypto",
" gcm",
" oaep"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "38cfeb8175228fa34fe6016dbbd9dacd00a0f04ad81df5b1134d70d2551b36f5",
"md5": "bca96f53da8411c0a041aec34f79848d",
"sha256": "6b10289c2f5438b0d78685606ed353f6baeb1257c8be3f297eb3705c4a6866a5"
},
"downloads": -1,
"filename": "cross_crypto_py-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bca96f53da8411c0a041aec34f79848d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 10487,
"upload_time": "2025-07-24T23:33:11",
"upload_time_iso_8601": "2025-07-24T23:33:11.323987Z",
"url": "https://files.pythonhosted.org/packages/38/cf/eb8175228fa34fe6016dbbd9dacd00a0f04ad81df5b1134d70d2551b36f5/cross_crypto_py-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "428f35d8c040adf2ca29301a12c9c80cf49571616d8a9cbf556e9c1ebd2f16ad",
"md5": "8e0a6f3a65d91ccc6144cc0b67451fb2",
"sha256": "13730e980c22eff65bb54b2df4bb5c40824fd98aa087bd43ad6274a12236c662"
},
"downloads": -1,
"filename": "cross_crypto_py-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "8e0a6f3a65d91ccc6144cc0b67451fb2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 10637,
"upload_time": "2025-07-24T23:33:12",
"upload_time_iso_8601": "2025-07-24T23:33:12.357416Z",
"url": "https://files.pythonhosted.org/packages/42/8f/35d8c040adf2ca29301a12c9c80cf49571616d8a9cbf556e9c1ebd2f16ad/cross_crypto_py-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-24 23:33:12",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "acadyne",
"github_project": "cross-crypto-py",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "cross-crypto-py"
}