# pemks **Repository Path**: liangbing-ghb/cipher-cloud ## Basic Information - **Project Name**: pemks - **Description**: 基于关键词的可搜索加解密系统 - **Primary Language**: Unknown - **License**: EPL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-06 - **Last Updated**: 2025-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ```markdown # WULC 密码学工具包 - PEMKS 功能模块 ## 项目简介 WULC(Wuhan University Library for Cryptography)是由武汉大学密码学与区块链技术实验室开发的便携式密码学工具包。本模块(`pemks_function.java`)实现了基于椭圆曲线配对(Pairing-Based Cryptography)的可搜索加密方案(PEMKS),支持文件加密、关键词检索及安全解密功能。 --- ## 核心功能 1. **密钥生成** 基于椭圆曲线生成用户公私钥对(私钥 `sk` 和公钥 `pk_h`)。 2. **文件加密** 使用SM4算法加密文件内容,生成密文 `CF` 和文件密钥 `kF`。 3. **索引加密** 对文件关键词构建可搜索索引,生成包含加密关键词的密文 `CT`。 4. **陷阱门生成** 根据用户查询关键词生成检索令牌 `Tw`。 5. **安全检索** 验证用户权限,匹配查询关键词与加密索引,返回解密后的文件内容。 --- ## 环境依赖 - **编程语言**: Java 8+ - **依赖库**: - JPBC (Java Pairing-Based Cryptography Library) - HanLP (自然语言处理工具,用于关键词提取) - SM4Util (国密SM4算法实现) - **配置文件**: `a.properties`(椭圆曲线参数文件,需与代码同级目录) --- ## 快速使用指南 1. **输入明文文件路径** ``` DO请输入要加密的明文文件: C:\Users\user\test.txt ``` 2. **输入查询关键词** ``` User请输入要查询的关键词集合(用逗号分隔): 算法,安全,加密 ``` 3. **输出结果** - 查询成功:解密文件并输出内容到 `c.txt` - 查询失败:提示无权限访问 --- ## 关键参数说明 | 参数名 | 说明 | 默认值 | |--------------|-----------------------------|---------| | `SM4_BLOCK_SIZE` | SM4算法块大小 | 16 | | `l1` | 最大关键词数量 | 5 | | `a.properties` | 椭圆曲线参数文件 | 需用户配置 | --- ## 安全注意事项 1. **密钥管理** 私钥 `sk` 需严格保密,泄露将导致系统安全性丧失。 2. **文件路径** 代码中硬编码的解密输出路径(`D:\\Code\\job\\order\\cipher-cloud\\c.txt`)需根据实际环境修改。 3. **依赖版本** 确保所有依赖库版本与代码兼容,建议使用提供的版本组合。 --- ## 贡献指南 1. **代码规范** 遵循Google Java Style Guide,提交前运行静态代码检查。 2. **功能扩展** 欢迎提交以下改进: - 支持更多椭圆曲线类型 - 优化关键词提取算法 - 增加单元测试覆盖率 ```