cristiancmoises/zupt

GitHub: cristiancmoises/zupt

一个采用纯 C11 编写、集成后量子密钥封装与硬件加速加密的跨平台备份压缩工具,提供端到端完整性保护与抗量子攻击能力。

Stars: 15 | Forks: 1

# 项目已归档。 ## 最新版本与更新请[查看这里。](https://git.securityops.co/cristiancmoises/) logo **压缩一切。不信任任何事物。始终加密。** ![构建](https://img.shields.io/badge/build-passing-brightgreen) ![许可证](https://img.shields.io/badge/license-AGPL--3.0-blue) ![版本](https://img.shields.io/badge/version-2.1.7-orange) ![平台](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey) ![openSUSE](https://img.shields.io/badge/platform-openSUSE-73BA25?logo=opensuse&logoColor=white) ![商业版](https://img.shields.io/badge/commercial-sac%40securityops.co-darkgreen) 具备硬件自适应编解码器选择、AES-256 认证加密、后量子密钥封装以及全盘备份功能的备份压缩工具。纯 C11 编写,零依赖,约 13,000 行代码。可在 x86_64、aarch64、armhf、ppc64le、s390x 和 riscv64 上构建和运行。 ## 为什么选择 Zupt - **硬件自适应编解码器** — 运行时自动检测 AVX2/NEON 并选择最佳编解码器:在支持的硬件上使用 VaptVupt(LZ77 + tANS + SIMD 解码),在其他所有设备上使用 Zupt-LZHP。使用 `--vv` 或 `--lzhp` 覆盖。 - **后量子加密** — `--pq` 模式使用 ML-KEM-768 + X25519 混合 KEM(与 Signal 和 iMessage 采用相同方案)。防范“现在窃取,以后解密”的量子攻击。 - **AES-NI 硬件加速** — 通过 Jasmin 验证的汇编语言实现 AES-256-CTR,带有 4 块交错流水线。通过 OSXSAVE/XCR0 验证实现安全的 AVX 检测 — 在任何 CPU 上都不会出现 SIGILL。在不支持的硬件上回退到基于 C 表的 AES。 - **多线程** — 压缩和解压缩均已并行化。`-t 0` 自动检测核心数。 - **全盘备份** — `zupt disk backup` 通过单条命令克隆整个磁盘或分区。稀疏块检测跳过零数据区域,提供实时进度条,并支持所有加密模式。通过逐块的 XXH64 校验和进行字节级的恢复验证。 - **单命令加密备份** — `zupt compress -p changeme backup.zupt ~/data/` — AES-256 + HMAC-SHA256,隐藏文件名。 - **逐块完整性** — 每个块均有 XXH64 校验和 + HMAC-SHA256。瞬间拒绝错误密码。 - **形式化验证的加密** — 5 个 Jasmin 汇编函数具有常量时间证明。19 个 ACSL 注释函数可用于 Frama-C 内存安全分析。 - **多架构** — 可在 x86_64、aarch64、armhf、ppc64le、s390x、riscv64 上构建。x86_64 上使用 Jasmin CT 加密,其他平台使用 C 回退。任何存档均可在任何架构上解压。 - **零依赖** — ML-KEM、X25519、Keccak、SHA-256、AES-256、HMAC、PBKDF2、VaptVupt 编解码器 — 全部为纯 C11。仅需 `gcc` 或 `cl` 即可构建。 ## 快速入门 ### 快速安装 ``` curl -fsSL https://short.securityops.co/zupt | bash ``` ### 构建与安装 ``` git clone https://github.com/cristiancmoises/zupt.git && \ cd zupt && \ make && \ sudo make install ``` ### openSUSE 软件包 [openSUSE for Innovators](https://en.opensuse.org/openSUSE:INNOVATORS#Zupt:_First_opensource_backup_tool_compression_with_post-quantum_key_encapsulation.) 计划在 [Diraq](https://en.opensuse.org/User:Cabelo/DiraQ) 解决方案中提供了 Zupt。 对于 16.0: ``` zypper addrepo https://download.opensuse.org/repositories/home:cabelo:innovators/16.0/home:cabelo:innovators.repo zypper refresh && zypper install zupt ``` ### 基本用法 ``` # 压缩(自动为您的硬件选择最佳 codec) zupt compress backup.zupt ~/Documents/ # 使用密码加密压缩 zupt compress -p "changeme" backup.zupt ~/Documents/ # 提取 zupt extract -o ~/restored/ backup.zupt # Post-quantum 加密备份 zupt keygen -o mykey.key zupt keygen --pub -o pub.key -k mykey.key zupt compress --pq pub.key backup.zupt ~/Documents/ zupt extract --pq mykey.key -o ~/restored/ backup.zupt ``` ## 自动编解码器检测 Zupt v2.0.0 会根据您的硬件自动选择最佳的压缩编解码器。无需任何标志 — 只需运行 `zupt compress`,它就会选择可用的最快选项。 | 架构 | 可用 SIMD | 默认编解码器 | 解码吞吐量 | |---|---|---|---| | x86_64 + AVX2 | AVX2 内联 SIMD | **VaptVupt** | ~2–3 GB/s | | x86_64 (无 AVX2) | 标量 | Zupt-LZHP | ~500 MB/s | | aarch64 + NEON | NEON SIMD | **VaptVupt** | ~1–2 GB/s | | armhf, ppc64le, s390x, riscv64 | 标量 | Zupt-LZHP | ~300–500 MB/s | **解压是通用的。** 在 x86_64 上使用 VaptVupt 创建的存档可以在 aarch64 上解压(使用 NEON 或标量解码),反之亦然。编解码器 ID 按块存储 — 解码器会自动调用正确的处理路径。 当您明确需求时,可使用 `--vv`(强制使用 VaptVupt)或 `--lzhp`(强制使用 Zupt-LZHP)进行覆盖。 ## VaptVupt 编解码器 VaptVupt 是 Zupt 的高性能压缩编解码器。它结合了 LZ77 字典匹配、tANS(基于表的非对称数字系统)熵编码以及 SIMD 加速解压。 ### 架构 ``` Encoder: Hash-chain LZ77 → 5-byte multiply-shift hash, rep-match (3 recent offsets), lazy-2 parsing, AVX2 match extension (32 bytes/cycle) Entropy: Canonical Huffman | tANS | 4-way interleaved ANS | order-1 context model Decoder: AVX2 inline SIMD copies, tiered by offset (32/16/8/overlap), safe-zone fast path NEON SIMD on aarch64, scalar fallback on all architectures ``` ### 三种模式 | 模式 | CLI | 链深度 | 熵编码 | 适用场景 | |------|-----|-------------|---------|----------| | 超快 | `-l 1` 到 `-l 3` | 4 | 无 | 速度优先,流式处理 | | 均衡 | `-l 4` 到 `-l 7`(默认) | 48 | 4 路 ANS | 常规备份数据 | | 极限 | `-l 8` 到 `-l 9` | 256 | 1 阶上下文 ANS | 极限压缩率 | ### 基准测试结果 在构建主机上使用 1.9 MB 混合语料库(文本、JSON、CSV、随机二进制数据)进行测量。每个编解码器运行一次,通过 `clock_gettime(CLOCK_MONOTONIC)` 计算实际用时。可通过 `zupt bench --compare` 复现。 | 编解码器 | 压缩 | 解压 | 压缩率 | |-------|----------|------------|-------| | **VaptVupt UF** | 63 MB/s | **298 MB/s** | 2.7:1 | | **VaptVupt BAL**(默认) | 18 MB/s | **268 MB/s** | 3.5:1 | | **VaptVupt EXT** | 12 MB/s | **311 MB/s** | 3.5:1 | | Zupt-LZHP(v1.x 默认) | 8 MB/s | 137 MB/s | 4.0:1 | | Zupt-LZ | 28 MB/s | 348 MB/s | 3.3:1 | | gzip -6 | 26 MB/s | 99 MB/s | 4.0:1 | VaptVupt BAL 的解压速度比之前的 Zupt-LZHP 默认设置**快 2 倍**,比 gzip **快 2.7 倍**,同时实现了极具竞争力的压缩率。如果安装了 lz4/zstd,请在您的硬件上运行 `zupt bench --compare` 以获取完整的对比结果。 ### 为什么选择 VaptVupt? VaptVupt 相比传统基于 Huffman 的编解码器的架构优势: - **tANS 熵编码** — 渐进最优编码,每个符号单指令解码(相比之下,Huffman 需要多步树遍历) - **4 路交错 ANS** — 每次位流重填周期解码 4 个符号,将重填开销降低 4 倍 - **AVX2/NEON SIMD 解码** — 带有分层偏移处理的内联 32 字节拷贝(无函数指针调度)。在不支持的硬件上回退到标量模式。 - **重匹配** — 在哈希探测前检查 3 个最近的偏移量(O(1) 相比 O(chain_depth)),命中约 30% 的匹配。每个重复偏移量节省 10–15 bit。 - **1 阶上下文模型** — 捕获结构化数据(JSON、CSV、日志)中的字节对相关性 - **自适应窗口** — 在 wlog=16 和 wlog=20 之间进行试验性压缩,仅在提升 ≥3% 时选择更大的窗口 - **约 4,200 行**纯 C11 代码 — 可审计、可移植、无外部依赖 ## 后量子加密 `--pq` 模式采用符合 NIST FIPS 203 标准的 ML-KEM-768 + X25519 混合密钥封装。 ``` Public key → ML-KEM-768 Encaps + X25519 ECDH → hybrid shared secret → SHA3-512(ss ‖ transcript) → enc_key[32] + mac_key[32] → AES-256-CTR + HMAC-SHA256 per block ``` **安全模型:** 只要 ML-KEM-768(后量子)或 X25519(经典)其中之一是安全的,系统即为安全。 **密码模式(`-p`)非抗量子安全。** 如需长期保护,请使用 `--pq`。 ## 全盘备份 通过单条命令克隆整个磁盘、分区或原始镜像,并同时完成压缩和加密。 ### 快速入门 ``` # 克隆分区(需要读取权限) sudo zupt disk backup backup.zupt /dev/sda1 # 使用 post-quantum 加密克隆(最强) zupt keygen -o mykey.key zupt keygen --pub -o pub.key -k mykey.key sudo zupt disk backup --pq pub.key backup.zupt /dev/nvme0n1p2 # 使用密码加密克隆 sudo zupt disk backup -p "changeme" backup.zupt /dev/sda1 # 极限压缩(level 9,extreme mode) sudo zupt disk backup -l 9 backup.zupt /dev/sda1 # 还原到设备或文件 sudo zupt disk restore backup.zupt /dev/sda1 sudo zupt disk restore --pq mykey.key backup.zupt /dev/sda1 ``` ### 工作原理 ``` Source device → Read 4MB blocks → Sparse detection → Compress → Encrypt → Write .zupt │ │ │ │ │ └─ AES-256-CTR + HMAC-SHA256 │ └─ VaptVupt/LZHP (auto-selected) └─ Zero blocks stored as STORE (near-zero overhead) ``` Zupt 以 4MB 的块为单位按顺序读取源设备。每个块都会检查是否全为零(稀疏检测使用 8 字节宽度的比较)。零块以 `STORE` 编解码器存储 — 实际上只有块头而没有 payload,从而节省了压缩 CPU 时间和存档空间。非零块使用选定的编解码器进行压缩,并可选择性地加密。每个块的 XXH64 校验和确保在恢复时实现字节级完整性。 ### 最佳实践 **加密层级(最强 → 最快):** | 模式 | 命令 | 安全级别 | 速度影响 | |------|---------|---------------|-------------| | PQ 混合 | `--pq pub.key` | 抗量子 + 经典加密 | ~5% 开销 | | 密码 | `-p` | AES-256,PBKDF2 60 万次迭代 | ~3% 开销 | | 无 | (默认) | 仅完整性 (XXH64) | 最快 | **磁盘压缩级别:** | 级别 | 模式 | 最适用于 | 典型压缩率 | |-------|------|----------|--------------| | `-l 1` 到 `-l 3` | 超快 | 实时系统,NVMe(速度优先) | 1.5–2.5:1 | | `-l 4` 到 `-l 7` | 均衡(默认) | 常规分区,ext4/NTFS | 2–5:1 | | `-l 8` 到 `-l 9` | 极限 | 冷存储,归档备份 | 3–10:1 | **操作指南:** - **备份前请卸载**以确保文件系统一致性。对于实时系统,请使用 LVM 快照或冻结文件系统:`fsfreeze -f /mnt/data && zupt disk backup ... && fsfreeze -u /mnt/data`。 - **在 Linux 上,块设备需要 root 权限。** 普通文件(磁盘映像 `.img`、`.raw`)则不需要。 - **稀疏数据量大的磁盘**(刚格式化的、采用精简置备的 VM)压缩效果极佳 — 稀疏检测器能以内存拷贝的速度跳过零块,且没有压缩开销。 - **备份后请验证**:使用 `zupt test archive.zupt` — 检查每个块的 XXH64 校验和而无需解压。 - **长期存储请使用 PQ 加密** — 存储多年的磁盘备份应使用 `--pq` 以抵御未来的量子攻击。生成一对密钥,离线保存私钥,并分发公钥。 - **文件恢复是非破坏性的** — 写入普通文件会创建/覆盖该文件。写入块设备会覆盖原始设备。在恢复到设备之前,请仔细检查目标路径。 ### 与其他工具的比较 | 功能 | Zupt disk | dd + gzip | Clonezilla | partclone | |---------|-----------|-----------|------------|-----------| | 压缩 | VaptVupt/LZHP(自适应) | gzip(固定) | 多种 | 多种 | | 加密 | AES-256 + PQ 混合 | 无(通过管道传递给 gpg) | 无 | 无 | | 稀疏检测 | 自动 | 无 | 文件系统感知 | 文件系统感知 | | 逐块完整性 | 每块 XXH64 | 无 | 无 | CRC32 | | 单一二进制文件 | ✓零依赖) | 2 个以上的工具 | ISO 启动 | 多种 | | 后量子 | ML-KEM-768 | — | — | — | | 跨平台 | 6 种架构 | ✓ | 仅 x86 | 仅 Linux | ## 多架构支持 Zupt 可以在所有主要架构上构建和运行。Makefile 会自动检测平台并启用最佳的可用功能。 | 功能 | x86_64 | aarch64 | armhf | ppc64le | s390x | riscv64 | |---------|--------|---------|-------|---------|-------|---------| | Jasmin CT 加密 | ✓ | C 回退 | C 回退 | C 回退 | C 回退 | C 回退 | | AES-NI 硬件加速 | ✓(包含 AVX) | — | — | — | — | — | | AVX2 SIMD 解码 | ✓ | — | — | — | — | — | | NEON SIMD 解码 | — | ✓ | — | — | — | — | | 默认编解码器 | VaptVupt | VaptVupt | LZHP | LZHP | LZHP | LZHP | | 所有编解码器均可解码 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 为打包进行构建(PIE,强化标志): ``` make CFLAGS="-Wall -Wextra -O2 -std=c11 -fPIE -Iinclude -Isrc" LDFLAGS="-pie -Wl,-z,relro,-z,now" make install DESTDIR=/buildroot ``` ## 功能对比 | 功能 | Zupt v2.1 | gzip | zstd | 7-Zip | |---------|-----------|------|------|-------| | 默认编解码器 | VaptVupt/LZHP(自动) | DEFLATE | FSE+Huffman | LZMA2 | | 全盘备份 | **`zupt disk`** | — | — | — | | 后量子加密 | **ML-KEM-768** | — | — | — | | 密码加密 | AES-256 + HMAC | — | — | AES-256 | | AES-NI 硬件加速 | **Jasmin 验证** | — | — | — | | 逐块完整性 | XXH64 + HMAC | CRC32 | XXH64 | CRC32 | | 多线程压缩 | ✓ | — (pigz) | ✓ | ✓ | | 多线程解压 | **✓** | — | ✓ | ✓ | | 形式化验证 | **Jasmin CT + ACSL** | — | — | — | | mlock() 密钥保护 | ✓ | — | — | — | | AFL++ 模糊测试套件 | ✓ | — | ✓ | — | | 多架构 | **6 种架构** | ✓ | ✓ | ✓ | | 零依赖 | ✓ | ✓ | — | — | | 代码库 | ~1.2 万行 | ~1 万行 | ~7.5 万行 | ~10 万行以上| | 许可证 | **AGPL-3.0**(可提供商业版) | GPL | BSD | LGPL | ## 安全性 ``` Password mode: Password → PBKDF2-SHA256 (600K iter) → enc_key + mac_key PQ hybrid mode: Public key → ML-KEM-768 Encaps + X25519 ECDH → enc_key + mac_key Per-block: AES-256-CTR(enc_key, nonce ⊕ seq) + HMAC-SHA256(mac_key) Key protection: mlock() prevents swap, buffer canaries detect overflow Timing: Always-decrypt mitigation (no timing oracle on MAC failure) AES dispatch: AVX+AES-NI check with OSXSAVE/XCR0 (no SIGILL on any CPU) Verification: 5 Jasmin CT proofs, 19 ACSL contracts, 13 NIST/RFC test vectors ``` 有关威胁模型,请参阅 [SECURITY.md](SECURITY.md)。有关审核清单,请参阅 [AUDIT.md](AUDIT.md)。 ## 用法 ``` zupt compress [OPTIONS] zupt extract [OPTIONS] zupt list [OPTIONS] zupt test [OPTIONS] zupt disk backup [OPTIONS] zupt disk restore [OPTIONS] zupt bench [--compare] zupt keygen [-o file] [--pub] [-k privkey] zupt version zupt help ``` | 选项 | 描述 | |--------|-------------| | `-l <1-9>` | 压缩级别(默认:7) | | `-t ` | 线程数(0=自动,1=单线程,2–64) | | `-p [PW]` | 密码加密(PBKDF2 → AES-256) | | `--pq ` | 后量子混合加密 | | `-o ` | 输出目录(解压) | | `-s` | 直接存储而不压缩 | | `-f` | 快速 LZ 编解码器(Zupt-LZ) | | `--vv` | 强制使用 VaptVupt 编解码器 | | `--lzhp` | 强制使用 Zupt-LZHP 编解码器 | | `-v` | 详细输出 | | `--solid` | 固实模式(跨文件 LZ 上下文) | | `--compare` | 编解码器比较基准测试 | ## 构建 ``` make # Auto-detects arch, Jasmin, AVX2 make V=1 # Verbose build output make test-all # 77 tests: regression + NIST + VV + MT + PQ + disk make test-vv # VaptVupt codec unit tests only make test-asan # AddressSanitizer + UBSan build make fuzz-build # AFL++ fuzzing harnesses make install # Install binary + man page make help # Show all targets + detected capabilities build.bat # Windows (MSVC) ``` ### 基准测试 ``` zupt bench ~/Documents/ # Per-level benchmark (levels 1-9) zupt bench --compare # Cross-codec comparison (auto-generates corpus) zupt bench --compare ~/Documents/ # Compare codecs on your own data ``` ## 编解码器参考 | ID | 名称 | 算法 | 默认开启 | 覆盖命令 | |----|------|-----------|------------|----------| | `0x0010` | **VaptVupt** | LZ77 + tANS + AVX2/NEON SIMD | x86_64 (AVX2),aarch64 (NEON) | `--vv` | | `0x000A` | **Zupt-LZHP** | LZ77 + Huffman + 字节预测 | armhf,ppc64le,s390x,riscv64 | `--lzhp` | | `0x0009` | Zupt-LZH | LZ77 + Huffman | — | — | | `0x0008` | Zupt-LZ | 快速 LZ77,64KB 窗口 | — | `-f` | | `0x0000` | 存储 | 不压缩 | — | `-s` | 所有编解码器均向前兼容:使用任何编解码器创建的存档都可以由包含该编解码器的任何 Zupt 版本在任何架构上读取。VaptVupt 存档需要 Zupt v2.0 及以上版本。 ## 版本历史 | 版本 | 描述 | |---------|-------------| | v0.1–v0.6 | LZ77 压缩,AES-256 加密,多线程 | | v0.7 | 后量子混合加密(ML-KEM-768 + X25519) | | v1.0 | 稳定版本 — 格式冻结为 v1.4,安全审计 | | v1.1–v1.4 | X25519 修复,NIST 向量,CPUID 检测,Jasmin 源文件修复 | | v1.5 | Jasmin CT 汇编已链接(MAC 验证 + ML-KEM select 激活) | | v1.5.5 | 安装 Man page,V=1 详细输出,LDFLAGS/PIE,rpmlint,多架构 Makefile | | v2.0 | VaptVupt 1.1.0 编解码器,硬件自动检测,全部 5 个 Jasmin 接入,修复 AVX SIGILL,修复 copy_match/litlen,ACSL,mlock,模糊测试,canaries,AES-NI 流水线,多线程解压,多架构(6 种架构),--lzhp 标志 | | v2.1.0 | VaptVupt 1.4.0:跨块字典携带,上下文解码预取,更快的自适应窗口(2.6 倍编码速度),集成 API | | v2.1.1 | Termux/Android 构建修复,架构安全防护,Keccak ROL64 UB 修复,零 UBSan 违规 | | v2.1.2 | 全盘备份/还原(`zupt disk`),稀疏检测,所有加密模式,进度条 | | v2.1.3 | 磁盘还原修复(针对块设备的 POSIX 原始 I/O + O_SYNC,共享 decompress_block),Termux 构建修复(CC -dumpmachine 架构检测),77 项测试 | | **v2.1.3** | **LZHP 预测编码修复(解决结构化数据损坏问题),共享 write_enc_header,从磁盘移除 SOLID 标志,78 项测试** | | **v2.1.4** | **CodeQL:4 项安全修复 — 消除 TOCTOU 竞态条件(基于 fd 的 fstat),通过 volatile 清除 X25519 标量,78 项测试** | | **v2.1.5** | **块级去重(`--dedup`),XXH64 指纹索引,DEDUP_REF 块类型,81 项测试** | | **v2.1.6** | **`zupt info` 存档元数据命令,密码强度警告,VaptVupt 2.40.0 (format_v2),GUI 桌面应用程序,97 项测试** | | **v2.1.7** | **重新授权 MIT → AGPL-3.0-or-later。VaptVupt 依然保持 GPL-3.0-or-later(与上游保持同步);VaptVupt 从 2.40.0 升级至 2.46.1。完整的 SPDX 覆盖,刷新安全审计,通过 sac@securityops.co 提供商业授权渠道** | 有关每个版本的详细更改,请参阅 [CHANGELOG.md](CHANGELOG.md)。 ## 许可证 **Zupt 基于 GNU Affero 通用公共许可证 v3.0 或更高版本 (AGPL-3.0-or-later) 获得授权。** 完整的许可证文本请见 [LICENSE](LICENSE),其前有解释相关理由的正式前言。简而言之: - **您可以免费使用 Zupt** — 用于个人备份、您的企业、您的服务器、物理隔离环境中,任何地方均可。AGPL 基本上不会对单纯的日常使用施加任何义务。 - **如果您修改了 Zupt 并将修改后的版本作为网络服务运行**(例如,作为备份即服务产品、云端归档后端等),您必须向该服务的用户提供您修改部分的源代码。这是 AGPL 的“SaaS 条款”,也是 Zupt 采用 AGPL 而不是 GPL 或 MIT 的根本原因。 - **如果您重新分发 Zupt**(无论是否修改),AGPL 许可证将随之一并传递。 集成在内的 **VaptVupt 压缩编解码器**(`src/vv_*.c`,`include/vaptvupt*.h`,`include/vv_*.h`)单独获得 **GPL-3.0-or-later** 授权,因为 VaptVupt 可作为独立的压缩编解码器独立使用(规范上游:[github.com/cristiancmoises/vaptvupt](https://github.com/cristiancmoises/vaptvupt))。通过 AGPL 的第 13 条兼容性条款,GPL-3.0-or-later 与 AGPL-3.0-or-later 实现双向兼容,因此合并后的 Zupt 二进制文件依然保持有效的 AGPL-3.0 授权。详情请参阅 [LICENSE-VAPTVUPT](LICENSE-VAPTVUPT)。 ### 商业授权 如果您预期的用途与 AGPL 不兼容 — 例如: - 将 Zupt 或 VaptVupt 嵌入闭源产品、设备或固件中 - 在不发布您修改内容的情况下,将 Zupt 作为托管/SaaS 后端运行 - 将 Zupt 作为专有商业产品的一部分进行再分发 - 要求提供担保、赔偿或书面条款 **我们提供商业授权。** 联系方式:**sac@securityops.co** 作者保留所有原始 Zupt 和 VaptVupt 源代码的完整版权所有权,因此有能力授予替代的许可条款。 安全漏洞:请参阅 [SECURITY.md](SECURITY.md)。 ## 支持本项目 [![使用 Monero 捐赠](https://img.shields.io/badge/Donate-Monero-FF6600?style=flat&logo=monero)](DONATIONS.md) © 2026 Cristian Cezar Moisés — [github.com/cristiancmoises](https://github.com/cristiancmoises)
标签:AES-256, C语言, 后量子加密, 客户端加密, 密码学, 手动系统调用, 数据备份, 文件压缩, 漏洞评估