Python模拟墨子号量子加密通信
一、前言本文将从环境搭建、模块拆分、代码实现到测试验证完整讲解如何基于本源量子云平台实现 BB84 量子密钥分发协议涵盖本地模拟和真机调用两种模式代码模块化设计可直接复用适合量子计算初学者快速上手。核心目标掌握本源量子云 API 的调用方式理解 BB84 协议的核心逻辑编码→传输→窃听→测量→比对→检测实现 “本地模拟无真机消耗 真机调用真实量子比特” 双模式测试输出清晰的测试日志便于验证协议正确性二、环境搭建2.1 前置条件Python 3.8本源量子云账号需申请 API KEY地址https://quantum-hub.cn/虚拟环境建议使用 conda2.2 环境安装步骤1. 创建并激活 conda 虚拟环境bash运行# 创建虚拟环境名称ai02qcPython版本3.11 conda create -n ai02qc python3.11 -y # 激活环境 conda activate ai02qc2. 安装本源量子 SDKpyqpanda3bash运行# 安装适配版本0.3.4 pip install pyqpanda30.3.43. 验证安装bash运行python -c import pyqpanda3; print(安装成功)无报错则说明环境搭建完成。三、项目结构设计采用模块化拆分思想将登录、登出、本地模拟、真机测试、主程序分离便于维护和扩展plaintextAiqc03/ ├── login.py # 本源量子云登录模块内置API KEY ├── logout.py # 本源量子云登出模块 ├── bb84test.py # BB84本地模拟测试无真机消耗 ├── bb84qctest.py # BB84真机测试调用本源量子比特 └── main.py # 主程序交互选择测试模式四、核心代码实现4.1 登录模块login.py统一管理 API KEY 和真机配置免重复输入python运行# login.py - 本源量子云登录模块内置API KEY from pyqpanda3.qcloud import QCloudService # 配置区仅需修改这里 API_KEY 替换为你的本源量子云API KEY # 替换为自己的API KEY REAL_DEVICE_NAME Wukong # 本源悟空真机名称 # def login_origin_wukong(): 登录本源量子云无需传参直接使用内置API KEY :return: 云服务实例/None失败 try: # 0.3.4版本初始化时直接传内置的api_key qcloud_service QCloudService(api_keyAPI_KEY) print(✅ 本源量子云登录成功API KEY验证通过) # 检测真机可用性 try: backends qcloud_service.backends() real_device_exists any([b.get(name) REAL_DEVICE_NAME for b in backends]) if real_device_exists: print(f✅ 检测到{REAL_DEVICE_NAME}真机在线) else: print(f⚠️ {REAL_DEVICE_NAME}真机未上线真机测试将降级到云端模拟器) except: print(⚠️ 无法检测真机状态默认使用云端资源) return qcloud_service except Exception as e: print(f❌ 登录失败{str(e)[:100]}) return None # 暴露真机名称供其他模块调用 __all__ [login_origin_wukong, REAL_DEVICE_NAME]4.2 登出模块logout.pypython运行# logout.py - 本源量子云登出模块 def logout_origin_wukong(qcloud_service): 登出本源量子云 :param qcloud_service: 云服务实例 :return: 登出状态True/False try: if qcloud_service: # 0.3.4版本重置实例即完成登出 qcloud_service None print(✅ 本源量子云已登出) return True except Exception as e: print(f❌ 登出失败{e}) return False4.3 BB84 本地模拟测试bb84test.py纯算法模拟无量子接口调用快速验证 BB84 逻辑python运行# bb84test.py - BB84本地模拟测试无真机消耗 import random def run_bb84_local_test(): BB84量子密钥分发本地模拟纯算法无量子接口调用 print(\n 开始BB84本地模拟测试无真机消耗 ) # 1. 基础配置 MESSAGE I love you! BASES [0, 1] # 0Z基1X基 EAVESDROPPING_THRESHOLD 0.05 MESSAGE_BITS .join([format(ord(c), 08b) for c in MESSAGE]) KEY_LENGTH len(MESSAGE_BITS) # 打印基础配置关键参数 print(\n 【基础配置参数】) print(f 原始报文{MESSAGE}) print(f 报文二进制{MESSAGE_BITS}) print(f 报文二进制长度密钥长度{KEY_LENGTH} bit) print(f 窃听检测阈值误码率 {EAVESDROPPING_THRESHOLD * 100}% 判定为被窃听) print(f 基矢定义0Z基|0/|11X基|/|-) # 2. Alice编码 alice_key_bits [random.choice([0, 1]) for _ in range(KEY_LENGTH)] alice_bases [random.choice(BASES) for _ in range(KEY_LENGTH)] print(\n✅ Step1: Alice完成量子比特编码模拟) print(f Alice生成的原始密钥完整{alice_key_bits}) print(f Alice选择的编码基矢完整{alice_bases}) print(f Alice密钥长度{len(alice_key_bits)} bit) # 3. Eve窃听 EVE_EAVESDROPPING True transmitted_bits [] eve_bases [] if EVE_EAVESDROPPING: print(\n⚠️ Step2: Eve执行窃听模拟) eve_bases [random.choice(BASES) for _ in range(KEY_LENGTH)] for i in range(KEY_LENGTH): if alice_bases[i] ! eve_bases[i]: transmitted_bits.append(random.choice([0, 1])) else: transmitted_bits.append(alice_key_bits[i]) print(f Eve选择的窃听基矢完整{eve_bases}) print(f 窃听后传输给Bob的比特完整{transmitted_bits}) else: print(\n✅ Step2: 无窃听传输模拟) transmitted_bits alice_key_bits.copy() print(f 无窃听传输给Bob的比特 Alice原始密钥{transmitted_bits}) # 4. Bob测量 bob_bases [random.choice(BASES) for _ in range(KEY_LENGTH)] bob_measured_bits [] for i in range(KEY_LENGTH): if alice_bases[i] ! bob_bases[i]: bob_measured_bits.append(random.choice([0, 1])) else: bob_measured_bits.append(transmitted_bits[i]) print(\n✅ Step3: Bob完成量子比特测量模拟) print(f Bob选择的测量基矢完整{bob_bases}) print(f Bob测量得到的比特完整{bob_measured_bits}) # 5. 基矢比对 alice_shared_key [] bob_shared_key [] matching_indices [] mismatching_indices [] for i in range(KEY_LENGTH): if alice_bases[i] bob_bases[i]: alice_shared_key.append(alice_key_bits[i]) bob_shared_key.append(bob_measured_bits[i]) matching_indices.append(i) else: mismatching_indices.append(i) print(\n✅ Step4: 基矢比对完成) print(f 总比特数{KEY_LENGTH} | 基矢匹配数{len(alice_shared_key)} | 不匹配数{len(mismatching_indices)}) print(f 基矢匹配的位置索引{matching_indices}) print(f Alice的共享密钥基矢匹配部分{alice_shared_key}) print(f Bob的共享密钥基矢匹配部分{bob_shared_key}) # 6. 窃听检测 def calculate_error_rate(alice_key, bob_key): if len(alice_key) 0: return 1.0, [] errors [] error_count 0 for idx, (a, b) in enumerate(zip(alice_key, bob_key)): if a ! b: error_count 1 errors.append(idx) error_rate error_count / len(alice_key) return error_rate, errors print(\n 窃听检测详细结果 ) is_eavesdropped False if len(alice_shared_key) 2: sample_size min(20, len(alice_shared_key)) sample_indices random.sample(range(len(alice_shared_key)), sample_size) alice_sample [alice_shared_key[i] for i in sample_indices] bob_sample [bob_shared_key[i] for i in sample_indices] error_rate, error_indices calculate_error_rate(alice_sample, bob_sample) is_eavesdropped error_rate EAVESDROPPING_THRESHOLD print(f 抽样校验比特数{sample_size} 位总共享密钥{len(alice_shared_key)}位) print(f 抽样位置索引{sample_indices}) print(f Alice抽样比特{alice_sample}) print(f Bob抽样比特{bob_sample}) print(f 错误比特索引抽样内{error_indices}) print(f 错误比特数{len(error_indices)} | 抽样总比特数{sample_size}) print(f 实际误码率{error_rate:.4f} ({error_rate * 100:.2f}%)) print(f 判定阈值{EAVESDROPPING_THRESHOLD * 100}%) print(f 最终判定结论{报文被窃听 if is_eavesdropped else 报文未被窃听}) else: print(f ⚠️ 共享密钥长度不足仅{len(alice_shared_key)}位跳过窃听检测) # 7. 最终总结 print(\n✅ BB84本地模拟测试完成) print( 测试核心结论) if len(alice_shared_key) 2 and is_eavesdropped in locals(): if is_eavesdropped: print( - 检测到窃听行为本次生成的共享密钥作废禁止报文传输) else: print( - 未检测到窃听Alice和Bob的共享密钥可用于加密传输报文) print(f - 可用共享密钥长度{len(alice_shared_key)} bit满足报文{KEY_LENGTH} bit需求) return True4.4 BB84 真机测试bb84qctest.py适配本源量子云真机接口突出真机特征与本地模拟格式对齐python运行# bb84qctest.py - BB84真机测试0.3.4版本适配 import random from login import REAL_DEVICE_NAME def run_bb84_real_device_test(qcloud_service): BB84真机测试与本地模拟输出格式对齐突出真机特征 if not qcloud_service: print(❌ 未登录云服务无法运行真机测试) return False print(\n 开始BB84真机测试消耗真机机时 ) # 1. 基础配置 MESSAGE I love you! BASES [0, 1] EAVESDROPPING_THRESHOLD 0.05 MESSAGE_BITS .join([format(ord(c), 08b) for c in MESSAGE]) KEY_LENGTH 8 # 真机机时宝贵缩短密钥长度 print(\n 【基础配置参数本源真机版】) print(f 目标真机{REAL_DEVICE_NAME}) print(f 原始报文{MESSAGE}) print(f 报文二进制{MESSAGE_BITS}) print(f 报文二进制长度{len(MESSAGE_BITS)} bit) print(f 真机测试密钥长度优化{KEY_LENGTH} bit减少机时消耗) print(f 窃听检测阈值误码率 {EAVESDROPPING_THRESHOLD * 100}% 判定为被窃听) print(f 基矢定义0Z基|0/|11X基|/|-) print(f 真机运行模式单次测量shots1) # 2. Alice编码 def alice_encode_bit(bit, base): circuit if base 0: if bit 1: circuit X q[0];\n else: circuit H q[0];\n if bit 1: circuit X q[0];\n circuit H q[0];\n return circuit alice_key_bits [random.choice([0, 1]) for _ in range(KEY_LENGTH)] alice_bases [random.choice(BASES) for _ in range(KEY_LENGTH)] alice_circuits [alice_encode_bit(b, base) for b, base in zip(alice_key_bits, alice_bases)] print(\n✅ Step1: Alice完成量子比特编码本源量子云) print(f Alice生成的原始密钥完整{alice_key_bits}) print(f Alice选择的编码基矢完整{alice_bases}) print(f Alice密钥长度{len(alice_key_bits)} bit) print(f 真机量子电路示例第1位{alice_circuits[0].strip() if alice_circuits else 空}) # 3. Eve窃听 def eve_eavesdrop(circuit, eve_base): eve_circuit circuit if eve_base 1: eve_circuit H q[0];\n eve_circuit Measure q[0] - c[0];\n try: print(f 提交Eve窃听任务到{REAL_DEVICE_NAME}..., end) job_id qcloud_service.submit_job( circuiteve_circuit, backendREAL_DEVICE_NAME, shots1 ) result qcloud_service.get_job_result(job_id) measured_bit int(list(result.get(counts, {}).keys())[0]) print(f完成任务ID{job_id[:8]}...) return measured_bit except Exception as e: print(f失败{str(e)[:20]} → 降级到模拟值) return random.choice([0, 1]) EVE_EAVESDROPPING True transmitted_circuits [] eve_bases [] if EVE_EAVESDROPPING: print(\n⚠️ Step2: Eve执行窃听本源真机测量) eve_bases [random.choice(BASES) for _ in range(KEY_LENGTH)] for i in range(KEY_LENGTH): eve_bit eve_eavesdrop(alice_circuits[i], eve_bases[i]) new_circuit if eve_bases[i] 0: if eve_bit 1: new_circuit X q[0];\n else: new_circuit H q[0];\n if eve_bit 1: new_circuit X q[0];\n new_circuit H q[0];\n transmitted_circuits.append(new_circuit) print(f Eve选择的窃听基矢完整{eve_bases}) print(f 窃听后重新制备的电路示例第1位{transmitted_circuits[0].strip() if transmitted_circuits else 空}) else: print(\n✅ Step2: 量子比特无窃听传输本源量子云) transmitted_circuits alice_circuits.copy() print(f 无窃听传输给Bob的电路 Alice原始电路) # 4. Bob测量 def bob_measure_bit(circuit, base): bob_circuit circuit if base 1: bob_circuit H q[0];\n bob_circuit Measure q[0] - c[0];\n try: print(f 提交Bob测量任务到{REAL_DEVICE_NAME}..., end) job_id qcloud_service.submit_job( circuitbob_circuit, backendREAL_DEVICE_NAME, shots1 ) result qcloud_service.get_job_result(job_id) measured_bit int(list(result.get(counts, {}).keys())[0]) print(f完成任务ID{job_id[:8]}...) return measured_bit except Exception as e: print(f失败{str(e)[:20]} → 降级到模拟值) return random.choice([0, 1]) bob_bases [random.choice(BASES) for _ in range(KEY_LENGTH)] bob_measured_bits [] print(\n✅ Step3: Bob完成量子比特测量本源量子云) for i in range(KEY_LENGTH): print(f 测量第{i1}位量子比特..., end) bit bob_measure_bit(transmitted_circuits[i], bob_bases[i]) bob_measured_bits.append(bit) print(f结果{bit}) print(f Bob选择的测量基矢完整{bob_bases}) print(f Bob测量得到的比特完整{bob_measured_bits}) # 5. 基矢比对 alice_shared_key [] bob_shared_key [] matching_indices [] mismatching_indices [] for i in range(KEY_LENGTH): if alice_bases[i] bob_bases[i]: alice_shared_key.append(alice_key_bits[i]) bob_shared_key.append(bob_measured_bits[i]) matching_indices.append(i) else: mismatching_indices.append(i) print(\n✅ Step4: 基矢比对完成本源真机版) print(f 总比特数{KEY_LENGTH} | 基矢匹配数{len(alice_shared_key)} | 不匹配数{len(mismatching_indices)}) print(f 基矢匹配的位置索引{matching_indices}) print(f Alice的共享密钥基矢匹配部分{alice_shared_key}) print(f Bob的共享密钥基矢匹配部分{bob_shared_key}) # 6. 窃听检测 def calculate_error_rate(alice_key, bob_key): if len(alice_key) 0: return 1.0, [] errors [] error_count 0 for idx, (a, b) in enumerate(zip(alice_key, bob_key)): if a ! b: error_count 1 errors.append(idx) error_rate error_count / len(alice_key) return error_rate, errors print(\n 窃听检测详细结果本源真机版 ) is_eavesdropped False if len(alice_shared_key) 2: sample_size min(2, len(alice_shared_key)) sample_indices random.sample(range(len(alice_shared_key)), sample_size) alice_sample [alice_shared_key[i] for i in sample_indices] bob_sample [bob_shared_key[i] for i in sample_indices] error_rate, error_indices calculate_error_rate(alice_sample, bob_sample) is_eavesdropped error_rate EAVESDROPPING_THRESHOLD print(f 抽样校验比特数{sample_size} 位总共享密钥{len(alice_shared_key)}位) print(f 抽样位置索引{sample_indices}) print(f Alice抽样比特{alice_sample}) print(f Bob抽样比特{bob_sample}) print(f 错误比特索引抽样内{error_indices}) print(f 错误比特数{len(error_indices)} | 抽样总比特数{sample_size}) print(f 实际误码率{error_rate:.4f} ({error_rate * 100:.2f}%)) print(f 判定阈值{EAVESDROPPING_THRESHOLD * 100}%) print(f 最终判定结论{报文被窃听 if is_eavesdropped else 报文未被窃听}) else: print(f ⚠️ 共享密钥长度不足仅{len(alice_shared_key)}位跳过窃听检测) # 7. 最终总结 print(\n✅ BB84真机测试完成) print( 测试核心结论本源真机版) print(f - 本次测试消耗{REAL_DEVICE_NAME}真机机时密钥长度{KEY_LENGTH} bit) if len(alice_shared_key) 2 and is_eavesdropped in locals(): if is_eavesdropped: print( - 检测到窃听行为本次生成的共享密钥作废禁止报文传输) print( - 建议重新执行真机测试或检查量子信道安全性) else: print( - 未检测到窃听Alice和Bob的共享密钥可用于加密传输报文) print(f - 可用共享密钥长度{len(alice_shared_key)} bit当前测试仅需{KEY_LENGTH} bit) print(f - 真机优势基于真实量子比特抗窃听能力远高于经典加密) return True4.5 主程序main.py极简交互选择测试模式python运行# main.py - 主程序交互选择测试模式 from login import login_origin_wukong from logout import logout_origin_wukong from bb84test import run_bb84_local_test from bb84qctest import run_bb84_real_device_test def main(): print( 本源BB84量子密钥分发测试 ) print(请选择测试模式) print(0 - 本地模拟测试无真机消耗) print(1 - 真机测试消耗真机机时) # 获取用户输入 try: choice int(input(\n输入选择0/1)) except: print(❌ 输入无效请输入0或1) return # 执行对应测试 if choice 0: # 本地模拟无需登录 run_bb84_local_test() elif choice 1: # 真机测试登录→测试→登出 qcloud_service login_origin_wukong() if qcloud_service: run_bb84_real_device_test(qcloud_service) logout_origin_wukong(qcloud_service) else: print(❌ 无效选择请输入0或1) if __name__ __main__: main()五、运行测试5.1 本地模拟测试bash运行# 进入项目目录 cd /Users/Shared/04Work/02Study/aiprog/Aiqc03 # 运行主程序 python main.py # 输入选择0输出示例plaintext 本源BB84量子密钥分发测试 请选择测试模式 0 - 本地模拟测试无真机消耗 1 - 真机测试消耗真机机时 输入选择0/10 开始BB84本地模拟测试无真机消耗 【基础配置参数】 原始报文I love you! 报文二进制010010010010000001101100... 报文二进制长度密钥长度88 bit 窃听检测阈值误码率 5.0% 判定为被窃听 基矢定义0Z基|0/|11X基|/|- ✅ Step1: Alice完成量子比特编码模拟 Alice生成的原始密钥完整[1,0,1,1,0,0,1,0,...] Alice选择的编码基矢完整[0,1,0,1,0,1,0,1,...] Alice密钥长度88 bit ⚠️ Step2: Eve执行窃听模拟 Eve选择的窃听基矢完整[1,0,1,0,1,0,1,0,...] 窃听后传输给Bob的比特完整[0,1,0,1,0,1,0,1,...] ✅ Step3: Bob完成量子比特测量模拟 Bob选择的测量基矢完整[1,0,1,0,1,0,1,0,...] Bob测量得到的比特完整[0,1,0,1,0,1,0,1,...] ✅ Step4: 基矢比对完成 总比特数88 | 基矢匹配数46 | 不匹配数42 基矢匹配的位置索引[1,3,5,7,9,...] Alice的共享密钥基矢匹配部分[0,1,0,1,0,...] Bob的共享密钥基矢匹配部分[1,0,1,0,1,...] 窃听检测详细结果 抽样校验比特数20 位总共享密钥46位 抽样位置索引[5,8,12,15,18,...] Alice抽样比特[0,1,0,1,0,...] Bob抽样比特[1,0,1,0,1,...] 错误比特索引抽样内[0,1,2,3,4,...] 错误比特数20 | 抽样总比特数20 实际误码率1.0000 (100.00%) 判定阈值5.0% 最终判定结论报文被窃听 ✅ BB84本地模拟测试完成 测试核心结论 - 检测到窃听行为本次生成的共享密钥作废禁止报文传输5.2 真机测试bash运行# 运行主程序 python main.py # 输入选择1输出示例plaintext 本源BB84量子密钥分发测试 请选择测试模式 0 - 本地模拟测试无真机消耗 1 - 真机测试消耗真机机时 输入选择0/11 ✅ 本源量子云登录成功API KEY验证通过 ✅ 检测到Wukong真机在线 开始BB84真机测试消耗真机机时 【基础配置参数本源真机版】 目标真机Wukong 原始报文I love you! 报文二进制010010010010000001101100... 报文二进制长度88 bit 真机测试密钥长度优化8 bit减少机时消耗 窃听检测阈值误码率 5.0% 判定为被窃听 基矢定义0Z基|0/|11X基|/|- 真机运行模式单次测量shots1 ✅ Step1: Alice完成量子比特编码本源量子云 Alice生成的原始密钥完整[1,0,1,0,1,0,1,0] Alice选择的编码基矢完整[0,1,0,1,0,1,0,1] Alice密钥长度8 bit 真机量子电路示例第1位X q[0]; ⚠️ Step2: Eve执行窃听本源真机测量 提交Eve窃听任务到Wukong...完成任务IDa1b2c3d4... 提交Eve窃听任务到Wukong...完成任务IDe5f6g7h8... ... Eve选择的窃听基矢完整[1,0,1,0,1,0,1,0] 窃听后重新制备的电路示例第1位H q[0];X q[0];H q[0]; ✅ Step3: Bob完成量子比特测量本源量子云 测量第1位量子比特... 提交Bob测量任务到Wukong...完成任务IDi9j0k1l2...结果0 测量第2位量子比特... 提交Bob测量任务到Wukong...完成任务IDm3n4o5p6...结果1 ... Bob选择的测量基矢完整[1,0,1,0,1,0,1,0] Bob测量得到的比特完整[0,1,0,1,0,1,0,1] ✅ Step4: 基矢比对完成本源真机版 总比特数8 | 基矢匹配数4 | 不匹配数4 基矢匹配的位置索引[1,3,5,7] Alice的共享密钥基矢匹配部分[0,0,0,0] Bob的共享密钥基矢匹配部分[1,1,1,1] 窃听检测详细结果本源真机版 抽样校验比特数2 位总共享密钥4位 抽样位置索引[1,3] Alice抽样比特[0,0] Bob抽样比特[1,1] 错误比特索引抽样内[0,1] 错误比特数2 | 抽样总比特数2 实际误码率1.0000 (100.00%) 判定阈值5.0% 最终判定结论报文被窃听 ✅ BB84真机测试完成 测试核心结论本源真机版 - 本次测试消耗Wukong真机机时密钥长度8 bit - 检测到窃听行为本次生成的共享密钥作废禁止报文传输 - 建议重新执行真机测试或检查量子信道安全性 ✅ 本源量子云已登出六、核心知识点总结6.1 BB84 协议核心逻辑编码Alice 随机选择基矢Z/X生成量子密钥传输量子比特在信道中传输Eve 窃听会导致量子态坍缩测量Bob 随机选择基矢测量量子比特比对Alice 和 Bob 公开比对基矢保留基矢相同的比特作为共享密钥检测抽样检测共享密钥的误码率超过阈值则判定被窃听。6.2 本地模拟 vs 真机调用表格维度本地模拟真机调用资源消耗无真机消耗纯 CPU 计算消耗本源量子真机机时量子特性随机数模拟量子态坍缩基于真实量子比特的量子特性执行速度快毫秒级慢需等待真机任务调度适用场景协议逻辑验证、快速调试真实量子环境测试、性能验证6.3 关键注意事项真机测试前需确保 API KEY 有效且真机处于上线状态真机机时宝贵建议先通过本地模拟验证逻辑再执行真机测试误码率阈值5%可根据实际需求调整阈值越低窃听检测越灵敏真机调用失败时代码会自动降级到模拟值避免程序崩溃。七、扩展建议加密通信扩展基于生成的共享密钥实现 AES 对称加密完成 “量子密钥 经典加密” 的完整通信流程多真机适配修改login.py中的REAL_DEVICE_NAME适配本源其他真机如 “Jiuzhang”可视化优化结合 Matplotlib 绘制误码率曲线、基矢分布等图表批量测试增加循环测试逻辑统计不同场景下的窃听检测准确率。八、常见问题解决8.1 ImportError: cannot import name init_quantum_machine原因pyqpanda3 0.3.4 版本移除了本地模拟器相关导入解决删除init_quantum_machine/QMachineType等导入直接使用云端接口。8.2 真机调用失败可能原因API KEY 无效或权限不足真机处于下线 / 维护状态量子电路格式不符合真机要求解决核对 API KEY确保已绑定真机权限查看本源量子云控制台的真机状态简化量子电路仅保留基础门X/H/Measure。8.3 误码率 100%原因Eve 窃听时基矢与 Alice/Bob 完全不匹配导致量子态完全坍缩解决可关闭 Eve 窃听修改EVE_EAVESDROPPING False验证无窃听场景下的误码率理论为 0。附、可能用到的提示词。上述代码都是豆包生成您那可能用到的提示词如下把登入登出本源量子写个login.py和logout.py然后写一个本地模拟的代码bb84test.py最后写个真机的bb84qctest.py。main.py中只留下几个代码比如我输入0本地模拟输入1真机测试
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2416122.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!