Python模拟墨子号量子加密通信

news2026/3/20 17:05:12
一、前言本文将从环境搭建、模块拆分、代码实现到测试验证完整讲解如何基于本源量子云平台实现 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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…