# 密码测评平台 **Repository Path**: cloud-lumiere/cryptographic-evaluation-platform ## Basic Information - **Project Name**: 密码测评平台 - **Description**: 基于 Streamlit 的轻量级密码算法随机性 / 正确性 / 性能一体化测评平台。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-16 - **Last Updated**: 2026-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 密码算法测评平台 基于 Streamlit 的轻量级密码算法正确性 / 随机性 / 性能一体化测评平台。 ## 快速开始 在命令行中: ```bash cd cryptography-evaluation pip install -r requirements.txt streamlit run app.py ``` 浏览器自动打开 `http://localhost:8501` 或者直接运行目录下的`开始.bat` ## 功能概览 | 模块 | 说明 | |------|------| | **算法管理** | 上传/粘贴 Python 插件注册算法,支持分组密码、序列密码、哈希算法。内置 SM4 / ZUC / SM3 示例 | | **正确性测试** | 动态黑盒(等价类 KAT)、白盒(中间状态/边界/异常)、压力测试(随机输入对比) | | **随机性测评** | 分组密码 3 项结构性测试 + 序列密码 4 项结构性测试 + 6 项 NIST 随机性测试 | | **性能测试** | 速度(MB/s)、内存占用、平台信息采集 | | **任务与报告** | 历史任务管理 + 报告文件浏览下载(JSON/CSV/PDF),支持按类型过滤 | | **帮助与关于** | 接口设计标准、算法注册示例、技术栈、平台信息和联系方式 | ## 目录结构 ``` cryptography-evaluation/ ├── app.py # Streamlit 主程序(导航入口) ├── algorithm_manager.py # 算法插件管理、SQLite CRUD ├── cipher_engines.py # 随机性测评引擎(结构性+随机性) ├── correctness_engine.py # 正确性测试引擎(黑盒/白盒/压力) ├── performance_engine.py # 性能测试引擎(速度/内存/平台) ├── randomness_tests.py # 6 项 NIST 随机性测试 ├── structural_tests.py # 分组+序列结构性测试 ├── report_generator.py # JSON / CSV / PDF 报告生成 ├── task_manager.py # 任务记录、取消、历史查询 ├── test_vector_loader.py # 测试向量加载与验证 ├── correctness_page.py # 正确性测试页面组件 ├── requirements.txt # Python 依赖 │ ├── pages/ │ ├── perf_page.py # 性能测试 Streamlit 页面 │ └── task_page.py # 任务历史 Streamlit 页面 │ ├── algorithm_plugins/ # 算法插件目录 │ ├── sm4_plugin.py # SM4 分组密码 (GB/T 32907) │ ├── zuc_plugin.py # ZUC 序列密码 (GB/T 33133) │ └── sm3_plugin.py # SM3 哈希算法 (GB/T 32905) │ ├── test_vectors/ # 预置测试向量 │ ├── AES_128_KAT.json # AES-128 8 类等价类 │ ├── SM4_KAT.json # SM4 8 类等价类 │ ├── ZUC_KAT.json # ZUC 6 类等价类 │ └── SM3_KAT.json # SM3 7 组 KAT │ ├── reports/ # 生成的报告文件 └── algorithms.db # SQLite 数据库(自动创建) ``` ## 算法插件接口 注册新算法需要实现以下接口(只需实现对应类型的必要方法): ```python class MyCipher: def get_info(self) -> dict: """返回算法元数据""" return { "name": "MyCipher", # 算法名称 "type": "block", # block / stream / hash "block_size": 128, # 分组长度(比特), 哈希填0 "key_size": 128, # 密钥长度(比特), 哈希填0 "iv_size": 0, # IV长度(比特), 无则填0 "description": "描述", } def encrypt(self, plaintext: bytes, key: bytes) -> bytes: """分组密码加密 - 分组密码必须实现""" ... def generate_keystream(self, key: bytes, iv: bytes, length: int) -> bytes: """生成密钥流 - 序列密码必须实现""" ... def hash(self, message: bytes) -> bytes: """计算杂凑值 - 哈希算法必须实现""" ... ``` 将 `.py` 文件放入 `algorithm_plugins/` 目录或通过 Web 界面上传即可自动注册。 ## 测评体系 ### 随机性测评 **分组密码(3 项):** 明密文独立性 · 明文扩散性 · 密钥有效性 **序列密码(4 项):** 密钥/密钥流相关性 · IV/密钥流相关性 · 帧相关性 · 扩散性 **基础随机性(6 项 NIST 子集):** 单比特频数 · 自相关 · 扑克 · 重叠子序列 · 游程 · 游程分布 **参数可调:** 样本量 2^16 ~ 2^20 ### 正确性测试 **动态黑盒:** 等价类测试(分组 8 类 / 序列 6 类 / 哈希 7 组 KAT),支持自定义向量上传 **动态白盒:** 中间状态验证 · 边界值测试 · 异常输入测试 **压力测试:** 随机输入与参考实现逐项对比(100~10000 轮) ### 性能测试 **速度:** 多数据长度下的 MB/s 吞吐量 **内存:** 代码大小 · 运行时峰值内存 · 进程内存 **平台:** CPU 型号/频率 · 核心数 · 内存总量 · Python 版本 ## 报告导出 所有测评模块均支持三种格式导出: | 格式 | 说明 | |------|------| | **JSON** | 完整结果结构,适合程序处理 | | **CSV** | 表格数据,适合 Excel 分析 | | **PDF** | 含中文渲染、表格、图表的正式报告 | 报告文件存储在 `reports/` 目录,可通过「任务与报告」页面浏览和下载,支持按测评类型过滤。 ## 内置算法 | 算法 | 类型 | 标准 | |------|------|------| | SM4 | 分组密码 | GB/T 32907-2016 | | ZUC | 序列密码 | GB/T 33133-2016 | | SM3 | 杂凑算法 | GB/T 32905-2016 | ## 依赖 ``` streamlit>=1.28.0 numpy>=1.24.0 scipy>=1.10.0 pandas>=2.0.0 matplotlib>=3.7.0 reportlab>=4.0.0 pycryptodome>=3.19.0 psutil>=5.9.0 ``` ## 平台兼容 - Windows / Linux / macOS - Python 3.9+ - 中文字体自动检测(SimHei / WenQuanYi / Noto Sans CJK) ## 联系方式 18613772039@163.com https://www.cnblogs.com/luminescence