cross-crypto-py


Namecross-crypto-py JSON
Version 1.1.0 PyPI version JSON
download
home_pagehttps://github.com/acadyne/cross-crypto-py
SummaryCifrado híbrido seguro con interoperabilidad entre lenguajes como Python, TypeScript y Rust, basado en AES-GCM (256 bits) y RSA-OAEP (4096 bits)
upload_time2025-07-24 23:33:12
maintainerNone
docs_urlNone
authorJose Fabian Soltero Escobar
requires_python>=3.7
licenseMIT
keywords encryption cryptography security typescript python rsa aes hybrid-encryption cross-platform secure-communication data-protection crypto gcm oaep
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🚀 Cross Crypto Py 🐍🔒

![PyPI](https://img.shields.io/pypi/v/cross-crypto-py) ![License](https://img.shields.io/github/license/acadyne/cross-crypto-py) ![Python Versions](https://img.shields.io/pypi/pyversions/cross-crypto-py) ![Build](https://img.shields.io/badge/build-passing-brightgreen)

**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![PyPI](https://img.shields.io/pypi/v/cross-crypto-py) ![License](https://img.shields.io/github/license/acadyne/cross-crypto-py) ![Python Versions](https://img.shields.io/pypi/pyversions/cross-crypto-py) ![Build](https://img.shields.io/badge/build-passing-brightgreen)\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"
}
        
Elapsed time: 0.46206s