yua-compressor


Nameyua-compressor JSON
Version 0.1.3 PyPI version JSON
download
home_pageNone
SummaryYUA Compressor: custom compression format with optional AES-GCM encryption (zlib/zstd)
upload_time2025-08-13 02:37:01
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords compression zstd zlib encryption aes-gcm archive cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # YUA Compressor (`yua-compressor`)

> 自作フォーマット + 可逆圧縮 (zlib / zstd) + **AES-GCM暗号化(任意)** のPythonライブラリ & CLI。

- 拡張子: 推奨 `*.yuac`
- 形式: ヘッダー(固定長+可変) + ペイロード
- 暗号化: AES-256-GCM(`cryptography`)/ PBKDF: scrypt(塩付き)
- 圧縮: zlib(標準)/ zstd(オプション依存 `pip install yua-compressor[zstd]`)

## インストール
```bash
pip install .
# もしくは zstd有効化
pip install .[zstd]
```

## 使い方(Python API)
```python
from yua_compressor import compress_bytes, decompress_bytes

data = b"Hello YUA!" * 1000
blob = compress_bytes(data, algo="zstd", level=3, password="secret")  # bytes -> .yuac相当
plain = decompress_bytes(blob, password="secret")
assert plain == data
```

## CLI
```bash
# 圧縮
yuac c input.bin -o output.yuac -a zstd -l 6 -p "pass"
# 展開
yuac x output.yuac -o restored.bin -p "pass"
```

## ヘッダー仕様(v1)
```
offset size desc
0      4    magic = "YUAC"
4      1    version = 1
5      1    flags: bit0 = encrypted(1/0)
6      1    algo: 0=store 1=zlib 2=zstd
7      1    reserved
8      8    original_size (little endian, uint64)
16     16   checksum = blake2s(original, 16 bytes)
32     16   salt (present if encrypted)
48     12   nonce (present if encrypted)
# 以降 payload:
#   encrypted ? AES-GCM(ciphertext) : compressed-bytes
```
検証は復号→伸長→チェックサム照合の順で行います。

## ライセンス
MIT

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "yua-compressor",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "compression, zstd, zlib, encryption, AES-GCM, archive, cli",
    "author": null,
    "author_email": "\u7d50\u611b\u3061\u3083\u3093 <nakamurakensuke5@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/a2/0d/8c431d4556546e8fe76fa5a561a2f0122abbd16a7394ffd9e7e13d73e3e9/yua_compressor-0.1.3.tar.gz",
    "platform": null,
    "description": "# YUA Compressor (`yua-compressor`)\r\n\r\n> \u81ea\u4f5c\u30d5\u30a9\u30fc\u30de\u30c3\u30c8 + \u53ef\u9006\u5727\u7e2e (zlib / zstd) + **AES-GCM\u6697\u53f7\u5316\uff08\u4efb\u610f\uff09** \u306ePython\u30e9\u30a4\u30d6\u30e9\u30ea & CLI\u3002\r\n\r\n- \u62e1\u5f35\u5b50: \u63a8\u5968 `*.yuac`\r\n- \u5f62\u5f0f: \u30d8\u30c3\u30c0\u30fc\uff08\u56fa\u5b9a\u9577+\u53ef\u5909\uff09 + \u30da\u30a4\u30ed\u30fc\u30c9\r\n- \u6697\u53f7\u5316: AES-256-GCM\uff08`cryptography`\uff09/ PBKDF: scrypt\uff08\u5869\u4ed8\u304d\uff09\r\n- \u5727\u7e2e: zlib\uff08\u6a19\u6e96\uff09/ zstd\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\u4f9d\u5b58 `pip install yua-compressor[zstd]`\uff09\r\n\r\n## \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n```bash\r\npip install .\r\n# \u3082\u3057\u304f\u306f zstd\u6709\u52b9\u5316\r\npip install .[zstd]\r\n```\r\n\r\n## \u4f7f\u3044\u65b9\uff08Python API\uff09\r\n```python\r\nfrom yua_compressor import compress_bytes, decompress_bytes\r\n\r\ndata = b\"Hello YUA!\" * 1000\r\nblob = compress_bytes(data, algo=\"zstd\", level=3, password=\"secret\")  # bytes -> .yuac\u76f8\u5f53\r\nplain = decompress_bytes(blob, password=\"secret\")\r\nassert plain == data\r\n```\r\n\r\n## CLI\r\n```bash\r\n# \u5727\u7e2e\r\nyuac c input.bin -o output.yuac -a zstd -l 6 -p \"pass\"\r\n# \u5c55\u958b\r\nyuac x output.yuac -o restored.bin -p \"pass\"\r\n```\r\n\r\n## \u30d8\u30c3\u30c0\u30fc\u4ed5\u69d8\uff08v1\uff09\r\n```\r\noffset size desc\r\n0      4    magic = \"YUAC\"\r\n4      1    version = 1\r\n5      1    flags: bit0 = encrypted(1/0)\r\n6      1    algo: 0=store 1=zlib 2=zstd\r\n7      1    reserved\r\n8      8    original_size (little endian, uint64)\r\n16     16   checksum = blake2s(original, 16 bytes)\r\n32     16   salt (present if encrypted)\r\n48     12   nonce (present if encrypted)\r\n# \u4ee5\u964d payload:\r\n#   encrypted ? AES-GCM(ciphertext) : compressed-bytes\r\n```\r\n\u691c\u8a3c\u306f\u5fa9\u53f7\u2192\u4f38\u9577\u2192\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u7167\u5408\u306e\u9806\u3067\u884c\u3044\u307e\u3059\u3002\r\n\r\n## \u30e9\u30a4\u30bb\u30f3\u30b9\r\nMIT\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "YUA Compressor: custom compression format with optional AES-GCM encryption (zlib/zstd)",
    "version": "0.1.3",
    "project_urls": {
        "Homepage": "https://example.com/yua-compressor",
        "Repository": "https://example.com/yua-compressor"
    },
    "split_keywords": [
        "compression",
        " zstd",
        " zlib",
        " encryption",
        " aes-gcm",
        " archive",
        " cli"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b43f3155406d9e1c7160e754d35d4d8311b3d4a2ddc6e98c57ec3639459940bc",
                "md5": "329fbc97c6d5323502ec81f6f030aa0e",
                "sha256": "c1efc800456925e7f6bfe72a1db79d71511df5d8a141f4fcc5b2685db44799f1"
            },
            "downloads": -1,
            "filename": "yua_compressor-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "329fbc97c6d5323502ec81f6f030aa0e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 6644,
            "upload_time": "2025-08-13T02:36:59",
            "upload_time_iso_8601": "2025-08-13T02:36:59.537048Z",
            "url": "https://files.pythonhosted.org/packages/b4/3f/3155406d9e1c7160e754d35d4d8311b3d4a2ddc6e98c57ec3639459940bc/yua_compressor-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a20d8c431d4556546e8fe76fa5a561a2f0122abbd16a7394ffd9e7e13d73e3e9",
                "md5": "024bda27fb6110b6e0be6d1f529e5062",
                "sha256": "dffb38b691941d0a60fecae838655c16ec0a7fe2ed0cc94788f08dc5f526cf71"
            },
            "downloads": -1,
            "filename": "yua_compressor-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "024bda27fb6110b6e0be6d1f529e5062",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 6291,
            "upload_time": "2025-08-13T02:37:01",
            "upload_time_iso_8601": "2025-08-13T02:37:01.564860Z",
            "url": "https://files.pythonhosted.org/packages/a2/0d/8c431d4556546e8fe76fa5a561a2f0122abbd16a7394ffd9e7e13d73e3e9/yua_compressor-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-13 02:37:01",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "yua-compressor"
}
        
Elapsed time: 0.93456s