ZeroWang030221/Space-Efficient-Quantum-Algorithm-for-Elliptic-Curve-Discrete-Logarithms-with-Resource-Estimation
GitHub: ZeroWang030221/Space-Efficient-Quantum-Algorithm-for-Elliptic-Curve-Discrete-Logarithms-with-Resource-Estimation
一个用于椭圆曲线离散对数问题的空间高效量子算法及资源估算工具。
Stars: 4 | Forks: 0
# 椭圆曲线离散对数的空间高效量子算法及资源估算
本仓库包含用于椭圆曲线离散对数场景中空间高效量子模逆运算的资源估算代码。
项目目前包含两个主要部分:
- `eea_model/`:空间高效扩展欧几里得算法(EEA)的经典状态转移模型。
- `eea_circuits.py`:模逆运算的量子电路构造与资源估算代码。
## 仓库结构
```
├── eea_model/
│ ├── register.py
│ ├── one_iter.py
│ ├── one_iter_opt.py
│ └── main.py
│
├── eea_circuits.py
```
## 需求
推荐环境:
* Python 3.10+
* Qiskit
你可以通过以下命令安装主要依赖:
```
pip install qiskit
```
如果希望运行 `eea_model/` 中的经典追踪脚本,可能还需要:
```
pip install pandas
```
## 1. `eea_model/`:经典 EEA 状态转移模型
该文件夹包含量子友好型 EEA 迭代逻辑的经典模拟。
### 文件
* `register.py`:寄存器/状态定义
* `one_iter.py`:基准单次迭代实现
* `one_iter_opt.py`:优化单次迭代实现
* `main.py`:驱动脚本,用于运行迭代追踪并导出中间状态
### 运行
在仓库根目录下执行:
```
python eea_model/main.py
```
该脚本会初始化寄存器,反复应用基准或优化的一次迭代过程,验证最终的模逆结果,并将中间追踪写入 `result.csv`。
## 2. `eea_circuits.py`:模逆电路构造与资源估算
主脚本为:
```
eea_circuits.py
```
该脚本构造模逆电路组件,并报告 `ccx`、`cx` 和 `x` 基下的门数量。它支持两种执行模式:
* **full**:显式构建完整电路并编译到原始基
* **recursive**:递归统计各模块数量而不构建完整的大电路
脚本内置以下问题规模的配置:
* `n = 64, 128, 160, 192, 224, 256, 384, 512`
对于这些值,相应的 `len_width` 和 `T_max` 已在代码中预定义。
### 模式选择
脚本支持:
* `--mode auto`
* `--mode full`
* `--mode recursive`
在 `auto` 模式下,策略如下:
* `n <= 256` → `full`
* `n = 384, 512` → `recursive`
这是脚本的默认行为。
## 运行 `eea_circuits.py`
### 基本用法
```
python eea_circuits.py --n 256
```
这将以 `mode=auto` 运行,并将输出写入默认的 `outputs/` 目录。
### 命令行参数
```
python eea_circuits.py \
--n 256 \
--mode auto \
--inspect 0 \
--log_every 20 \
--outdir outputs
```
参数说明:
* `--n`:问题规模
* `--mode`:`auto`、`full` 或 `recursive` 之一
* `--inspect`:打印前几步的模块计数;主要在递归模式下有用
* `--log_every`:递归模式下的日志记录频率
* `--outdir`:输出目录
* `--save_qasm`:保存完整电路的 QASM 文件;仅在 full 模式下有意义
## 输出文件
根据模式不同,脚本生成不同的输出。
### Full 模式
脚本会打印最终汇总信息,包括:
* `ccx`
* `cx`
* `x`
* 总操作数
* 耗时
如果启用 `--save_qasm`,还会保存完整电路的 QASM 文件。
### Recursive 模式
脚本会将逐步骤和逐模块的计数日志写入输出目录:
* `n{n}_step_counts_recursive.txt`
* `n{n}_module_counts_recursive.txt`
例如:
```
outputs/n512_step_counts_recursive.txt
outputs/n512_module_counts_recursive.txt
```
同时在终端打印运行进度,并在最后输出汇总信息。
标签:CCX门, CX门, EEA, Python, Qiskit, X门, 后量子密码, 密码学算法, 开源科学计算, 扩展欧几里得算法, 无后门, 椭圆曲线离散对数, 模逆运算, 空间高效量子算法, 经典状态转移模型, 资源估算, 逆向工具, 量子友好迭代, 量子电路, 量子算法, 量子计算, 量子计算研究, 量子资源估计, 门计数