kyber-py 项目使用教程
2026-01-22 04:51:01作者:魏献源Searcher
1. 项目目录结构及介绍
kyber-py/
├── assets/
│ ├── ML-KEM-*
│ └── PQCLkemKAT_*.rsp
├── benchmarks/
├── docs/
├── src/
│ └── kyber_py/
│ ├── aes256_ctr_drbg.py
│ ├── kyber.py
│ ├── ml_kem.py
│ ├── polynomials_generic.py
│ └── ...
├── tests/
│ ├── test_kyber.py
│ └── test_ml_kem.py
├── .gitignore
├── LICENSE
├── README.md
├── pyproject.toml
├── pytest.ini
└── requirements.txt
目录结构介绍
- assets/: 包含用于测试的KAT(Known Answer Test)文件,分别用于ML-KEM和Kyber的测试。
- benchmarks/: 包含项目的性能测试代码。
- docs/: 包含项目的文档文件。
- src/kyber_py/: 项目的主要源代码目录,包含实现ML-KEM和Kyber的核心代码。
- aes256_ctr_drbg.py: 实现AES256 CTR DRBG的文件。
- kyber.py: 实现Kyber算法的文件。
- ml_kem.py: 实现ML-KEM算法的文件。
- polynomials_generic.py: 实现多项式环的通用操作。
- tests/: 包含项目的单元测试代码,分别用于测试Kyber和ML-KEM。
- .gitignore: Git忽略文件配置。
- LICENSE: 项目许可证文件。
- README.md: 项目介绍和使用说明。
- pyproject.toml: 项目配置文件,定义项目依赖和构建工具。
- pytest.ini: pytest配置文件。
- requirements.txt: 项目依赖包列表。
2. 项目启动文件介绍
项目的主要启动文件位于 src/kyber_py/ 目录下,主要包括以下几个文件:
- kyber.py: 实现Kyber算法的主要逻辑。用户可以通过导入该文件中的类和方法来使用Kyber算法。
- ml_kem.py: 实现ML-KEM算法的主要逻辑。用户可以通过导入该文件中的类和方法来使用ML-KEM算法。
示例代码
from kyber_py.kyber import Kyber512
# 生成密钥对
pk, sk = Kyber512.keygen()
# 加密生成共享密钥和挑战
key, c = Kyber512.encaps(pk)
# 解密生成共享密钥
_key = Kyber512.decaps(sk, c)
assert key == _key
3. 项目的配置文件介绍
pyproject.toml
pyproject.toml 文件定义了项目的构建系统和依赖项。以下是该文件的部分内容示例:
[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "kyber-py"
version = "0.1.0"
description = "A pure python implementation of ML-KEM (FIPS 203) and CRYSTALS-Kyber"
authors = [
{ name="Giacomo Pope", email="giacomo.pope@example.com" }
]
dependencies = [
"pycryptodome>=3.10.1"
]
requirements.txt
requirements.txt 文件列出了项目所需的依赖包及其版本。用户可以通过运行 pip install -r requirements.txt 来安装所有依赖项。
pycryptodome>=3.10.1
pytest.ini
pytest.ini 文件是pytest的配置文件,定义了测试运行时的配置选项。
[pytest]
addopts = --cov=src/kyber_py --cov-report=term-missing
以上是 kyber-py 项目的基本使用教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。希望这些内容能帮助你更好地理解和使用该项目。
登录后查看全文
热门项目推荐
相关项目推荐
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C0123
let_datasetLET数据集 基于全尺寸人形机器人 Kuavo 4 Pro 采集,涵盖多场景、多类型操作的真实世界多任务数据。面向机器人操作、移动与交互任务,支持真实环境下的可扩展机器人学习00
mindquantumMindQuantum is a general software library supporting the development of applications for quantum computation.Python059
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
491
3.62 K
Ascend Extension for PyTorch
Python
300
332
暂无简介
Dart
740
178
React Native鸿蒙化仓库
JavaScript
297
346
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
866
473
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
289
123
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
11
1
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
65
20
仓颉编程语言测试用例。
Cangjie
43
870