Windows安装liboqs库

前置

  • Python 3.9+(确保已安装)
  • CMake (从 cmake.org 下载安装)
  • Git (从 git-scm.com 下载安装)
  • MinGW-w64 (GCC 编译器,从 SourceForge 下载)
  • Ninja (可选,但推荐:pip install ninja

安装完 MinGW 后,记得把 mingw64\bin 目录添加到系统 PATH 环境变量中。

编译安装 liboqs(C 库)

bash 复制代码
# 1. 克隆仓库
git clone https://github.com/open-quantum-safe/liboqs.git
cd liboqs

# 2. 创建构建目录
mkdir build
cd build

# 3. 配置 CMake
cmake -G "MinGW Makefiles" -DBUILD_SHARED_LIBS=ON -DOQS_BUILD_ONLY_LIB=ON -DCMAKE_INSTALL_PREFIX=F:/liboqs_install ..
# F:/liboqs_install是我自己的路径,可改

# 4. 编译并安装
mingw32-make -j8
mingw32-make install

配置python绑定

bash 复制代码
# 克隆 oqs-python 仓库
git clone https://github.com/open-quantum-safe/liboqs-python.git
cd liboqs-python
bash 复制代码
# 告诉 oqs-python 去哪里找 liboqs
$env:LIBOQS_PATH="F:/liboqs_install"

# 把 liboqs.dll 所在目录加入 PATH,这样 Python 运行时才能加载到 DLL
$env:PATH="$env:PATH;F:/liboqs_install/bin"
bash 复制代码
# 推荐使用虚拟环境(可选但推荐)
python -m venv venv
.\venv\Scripts\activate

# 升级 pip
python -m pip install --upgrade pip

# 安装 oqs-python
pip install .
bash 复制代码
python -c "from oqs import KeyEncapsulation; print('oqs-python 安装成功!')"

注意:我编译的 liboqs 是 0.15.0 ,而 oqs-python 仓库是 0.16.0.dev0(开发版),两者版本不一致。这可能导致 API 不兼容。

旧 API 新 API
public_key, secret_key = kem.generate_keypair() public_key = kem.generate_keypair()
kem.encapsulate(public_key) kem.encap_secret(public_key)
kem.decapsulate(ciphertext, secret_key) kem.decap_secret(ciphertext)

解决方案: 变更API写法

运行示例

python 复制代码
from oqs import KeyEncapsulation

# 使用 Kyber512 算法
kem_sender = KeyEncapsulation("Kyber512")

# generate_keypair() 只返回公钥(不再返回两个值)
public_key = kem_sender.generate_keypair()

# 接收方也生成密钥对
kem_receiver = KeyEncapsulation("Kyber512")
receiver_public_key = kem_receiver.generate_keypair()

# 封装(加密)- 使用 encap_secret
ciphertext, shared_secret_sender = kem_sender.encap_secret(receiver_public_key)

# 解封装(解密)- 使用 decap_secret
shared_secret_receiver = kem_receiver.decap_secret(ciphertext)

print("共享密钥一致:", shared_secret_sender == shared_secret_receiver)

试试Dilithium算法

python 复制代码
from oqs import Signature

# 使用新名称 ML-DSA-65(对应原来的 Dilithium3)
sig_alg = "ML-DSA-65"
signer = Signature(sig_alg)

public_key = signer.generate_keypair()
secret_key = signer.export_secret_key()

message = b"This is a message to be signed"
signature = signer.sign(message)
is_valid = signer.verify(message, signature, public_key)

print("签名验证结果:", "通过" if is_valid else "失败")
print("公钥长度:", len(public_key), "字节")
print("私钥长度:", len(secret_key), "字节")
print("签名长度:", len(signature), "字节")

感悟

安装这个报了很多错,都是一步一步问AI;还有这个库,算法名字还变更,可恶;

相关推荐
寒水馨1 天前
Windows 11下载、安装openclaw-v2026.7.1(附安装包OpenClawCompanion-Setup-x64.exe)
windows·大模型·开源软件·ai助手·openclaw·个人ai·中文版
sukalot1 天前
windows网络适配器驱动开发-为多个 Windows 版本生成 WiFiCx 驱动程序
windows·驱动开发
CCPC不拿奖不改名1 天前
大模型推理架构与开源生态知识整理
数据库·windows·python·架构·langchain·开源·github
王维同学2 天前
[自学][Windows C++]RunOnceEx 注册表分组键的安全遍历
c++·windows·安全·开源
redreamSo2 天前
一天涨 1800 星的 GitHub 榜首:AI 编程瓶颈变成了 token
人工智能·开源·github
imatt2 天前
Qt Creator 在Windows下编译信息乱码
windows·qt
逛逛GitHub2 天前
盘点 18 个 Kimi K3 外网爆火的案例,太令人惊艳了。
github
就不掉头发2 天前
计算机的虚拟内存
linux·服务器·windows
春风霓裳2 天前
window设置永不更新
windows
benchmark_cc2 天前
如何用 Python 进行多周期 K 线合成与时区对齐?基于 QuantDash 与 Pandas 的量化数据清洗实战(附 GitHub 源码)
开发语言·python·github·盯盘·pandas·quantdash·量化数据