logo
0
1
WeChat Login
feat: 添加前端加密模式支持

MCBEPackCrypt

一个基于Web的Minecraft基岩版资源包加密与解密实用工具。

📖 项目简介

MCBEPackCrypt 是一个专为 Minecraft 基岩版(Bedrock Edition)设计的资源包加密解密工具。通过简洁的Web界面,用户可以轻松地对资源包进行加密保护,防止未经授权的访问和修改。

✨ 主要功能

  • 🔐 资源包加密:支持 .zip.mcpack 格式的资源包加密
  • 🔓 资源包解密:使用密钥文件对加密的资源包进行解密
  • 🌐 Web界面:直观易用的现代化Web用户界面
  • 实时处理:快速的文件上传、处理和下载
  • 🔒 安全下载:临时下载链接,5分钟有效期,一次性使用
  • 📦 多格式支持:自动识别并处理不同的资源包格式

🛠️ 技术栈

前端

  • React 18 - 现代化的用户界面框架
  • TypeScript - 类型安全的JavaScript超集
  • Ant Design - 企业级UI设计语言和组件库
  • Vite - 快速的前端构建工具

后端

  • Node.js - JavaScript运行时环境
  • Express.js - 轻量级Web应用框架
  • TypeScript - 类型安全的服务端开发
  • tsx - 主进程TypeScript执行器(开发环境)
  • ts-node - Worker线程TypeScript执行器(开发环境)

核心依赖

  • multer - 文件上传处理中间件
  • archiver - ZIP文件创建和压缩
  • yauzl/yazl - ZIP文件读写操作
  • uuid - 唯一标识符生成
  • crypto - Node.js内置加密模块

技术架构说明

开发环境

  • 主进程(后端服务器):使用 tsx 直接运行 TypeScript 文件
  • Worker线程:使用 ts-node/register 运行 TypeScript Worker 文件
  • 前端:使用 Vite 开发服务器,支持热重载

生产环境

  • 主进程:运行 tsc 编译后的 JavaScript 文件
  • Worker线程:运行编译后的 JavaScript Worker 文件
  • 前端:构建为静态资源,由后端服务器提供

多线程架构

  • WorkerPool:管理多个 Worker 线程,实现并行处理
  • CryptoWorker:专门处理加密/解密任务的 Worker 线程
  • 主线程:负责HTTP请求处理、文件管理和任务调度
  • 回退机制:Worker 线程池失败时自动回退到主线程同步处理

安全特性

  • 临时文件清理:服务器启动时自动清理残留的临时文件
  • 即时清理:加密/解密完成后立即删除中间文件
  • 安全下载:下载链接5分钟有效期,一次性使用后自动删除
  • 内存保护:使用流式处理,避免敏感数据长时间驻留内存
  • 定时清理:每30分钟自动清理超过1小时的旧文件

🔐 加密算法

本项目使用 AES-256-CFB8 加密算法,具体特性:

  • 算法:AES (Advanced Encryption Standard)
  • 密钥长度:256位
  • 模式:CFB8 (Cipher Feedback 8-bit)
  • 密钥生成:16位随机字符串
  • 文件处理:支持子包(subpacks)加密
  • 排除文件manifest.jsonpack_icon.pngbug_pack_icon.png 等元数据文件不加密

🚀 安装与启动

环境要求

  • Node.js >= 18.0.0
  • npm >= 8.0.0

安装步骤

  1. 克隆项目

    # 克隆项目到本地 git clone https://cnb.cool/EnderRealm/public/MCBEPackCrypt.git
  2. 安装依赖

    npm install
  3. 启动开发服务器

    npm run dev
  4. 访问应用

生产环境部署

方式一:Docker部署(推荐)

  1. 拉取Docker镜像

    docker pull docker.cnb.cool/enderrealm/public/MCBEPackCrypt
  2. 运行容器

    全栈模式(默认)

    docker run -d -p 3000:3000 --name MCBEPackCrypt-app docker.cnb.cool/enderrealm/public/MCBEPackCrypt

    纯前端模式

    docker run -d -p 3000:3000 -e DEPLOYMENT_MODE=frontend-only --name MCBEPackCrypt-frontend docker.cnb.cool/enderrealm/public/MCBEPackCrypt
  3. 部署模式

    本应用支持两种部署模式:

    • 全栈模式 (DEPLOYMENT_MODE=fullstack,默认)

      • 完整的后端API服务
      • 服务端加密/解密处理
      • 文件上传和下载管理
      • 适用于对安全性要求较高的生产环境
    • 纯前端模式 (DEPLOYMENT_MODE=frontend-only)

      • 使用Web Crypto API进行客户端加密/解密
      • 文件不上传到服务器,全部在浏览器中处理
      • 增强隐私保护
      • 适用于对数据隐私要求极高的场景
  4. 自定义配置

    您可以根据需要修改以下参数:

    • 端口映射-p 宿主机端口:3000

      # 例如:使用8080端口 docker run -d -p 8080:3000 --name MCBEPackCrypt-app docker.cnb.cool/enderrealm/public/MCBEPackCrypt
    • 容器名称--name 自定义名称

      # 例如:使用自定义名称 docker run -d -p 3000:3000 --name my-encrypt-tool docker.cnb.cool/enderrealm/public/MCBEPackCrypt
    • 环境变量-e 变量名=值

      # 纯前端模式 + 自定义端口 docker run -d -p 8080:3000 -e DEPLOYMENT_MODE=frontend-only --name my-encrypt-tool docker.cnb.cool/enderrealm/public/MCBEPackCrypt
    • 完整自定义示例

      docker run -d -p 8080:3000 -e DEPLOYMENT_MODE=frontend-only --name my-encrypt-tool docker.cnb.cool/enderrealm/public/MCBEPackCrypt
  5. 访问应用

    您可以通过访问 http://localhost:3000/api/health 来检查当前的部署模式

方式二:源码部署

  1. 构建项目

    npm run build
  2. 启动生产服务器

    npm start

📋 API 接口

注意:API可用性取决于部署模式。

健康检查(所有模式可用)

  • GET /api/health - 服务状态检查和部署模式信息

全栈模式API

以下API仅在 DEPLOYMENT_MODE=fullstack 时可用:

加密服务

  • POST /api/encrypt - 上传并加密资源包
  • GET /api/encrypt/status - 获取加密服务状态

解密服务

  • POST /api/decrypt - 上传加密文件和密钥进行解密
  • GET /api/decrypt/status - 获取解密服务状态

下载服务

  • GET /api/download/:id - 下载处理后的文件
  • GET /api/download/stats - 获取下载统计信息

纯前端模式

DEPLOYMENT_MODE=frontend-only 时,加密和解密完全在浏览器中使用Web Crypto API执行。不提供后端处理API。

📝 使用说明

加密资源包

  1. 访问Web界面
  2. 选择要加密的资源包文件(.zip、.mcpack)
  3. 点击"加密"按钮
  4. 等待处理完成
  5. 下载包含加密文件和密钥的压缩包

解密资源包

  1. 准备加密后的.zip文件和对应的.key密钥文件
  2. 在解密页面同时上传这两个文件
  3. 点击"解密"按钮
  4. 下载解密后的资源包

⚠️ 注意事项

  • 文件大小限制:单个文件最大100MB
  • 下载链接有效期:5分钟
  • 下载次数限制:每个链接仅可下载一次
  • 密钥安全:请妥善保管密钥文件,丢失后无法恢复
  • 支持格式:仅支持标准的Minecraft基岩版资源包格式

📄 许可证

本项目采用 GPL-3.0 许可证。

🙏 致谢

本项目的加密解密算法实现参考了 AllayMC/EncryptMyPack 项目。