当前位置: 首页 > article >正文

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真机测试

相关文章:

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

一、前言 本文将从环境搭建、模块拆分、代码实现到测试验证,完整讲解如何基于本源量子云平台实现 BB84 量子密钥分发协议,涵盖本地模拟和真机调用两种模式,代码模块化设计,可直接复用,适合量子计算初学者快速上手。 …...

新能源动力总成台架试验室全面建设规划:动力电池、电机及电力电子件试验室布局与实施方案

新能源动力总成台架试验室能力建设规划,70页PPT 动力电池,电机,电驱动总成,其他控制器等电力电子件试验室建设"搞电池测试?先学会和BMS对话"——这是某次凌晨三点我在试验室改协议解析脚本时顿悟的真理。动力…...

从抱怨访问速率限制到建立完整镜像站,大厂在开源生态扩张中是否正在利用技术霸权扼杀初创项目的生存空间?

## 开源镜像站背后:大厂的技术扩张与初创项目的生存夹缝 最近在技术社区里,经常能看到一些关于开源项目访问速率限制的抱怨。比如某个知名的代码托管平台,突然对未登录用户或者免费账户的API调用次数做了严格限制,导致一些自动化脚…...

纯电动车动态跟随能量管理策略

纯电车动态跟随能量管理策略近年来,纯电动车(BEV)的普及速度越来越快,而如何有效管理车辆的能量使用,成为了提升驾驶体验和延长续航里程的关键问题。在城市道路中,纯电动车常常面临频繁的启停和加速减速的情…...

天心大师也谈浮躁的人工智能,当孟子遇见AI,仁义何在?

有关AI的伦理、价值与未来走向的讨论从未停歇。天心大师,今日也谈及了人工智能发展中所显现的“浮躁”之气,并提出了引人深思的命题:当两千多年前倡导“仁义礼智信”的孟子,遇见了以算法和数据驱动的现代AI,将会碰撞出…...

爆火的“小龙虾“OpenClaw:风口之下,别让便利埋了安全隐患

爆火的"小龙虾"OpenClaw:风口之下,别让便利埋了安全隐患写在开头一、顶流"小龙虾":凭什么刷爆全网?职场办公神器运维得力助手行业深度赋能二、急转直下!官方预警 企业禁令,风险彻底暴…...

基于单片机与矩阵按键的门禁系统Proteus仿真程序:密码验证与电磁锁控制

单片机1602矩阵按键 门禁系统Proteus仿真程序--------------------------------------------| 第1列 第2列 第3列 第4列 ||第1行 0 1 2 3 ||第2行 4 5 6 7 | 初始密码:1234…...

首次全年盈利,同比增长453%!寒武纪2025年报很亮眼

一张图解读版(来源寒武纪官微): 2025年,这家成立九年的智能芯片企业首次实现全年盈利,营收突破64亿元,净利润超过20亿元。这家曾被质疑能否存活的硬科技公司,用实打实的数据证明了自己的价值。 …...

显存暴降92%!哈工大为线性注意力开辟了新道路

2017年,Transformer模型横空出世,在自然语言处理领域掀起了AI革命。此后,视觉领域也迎来了Transformer的浪潮,从图像分类到目标检测,从语义分割到图像生成,注意力机制几乎渗透到了计算机视觉的每一个角落。…...

【LLM进阶-Agent】8. Reflexion Agent 介绍

深度解析 LLM Agent 演进:从 ReAct 到 Reflexion 的“自我反思”之路 在复杂任务场景下,业界早期广泛采用的是 ReAct (Reason Act) 范式。然而,在实际落地中我们常常发现:大模型像是一个固执且健忘的员工。当它陷入幻觉或采取错误…...

风光储并网控制系统的设计与Matlab Simulink仿真建模研究

风光储并网控制系统,Matlab/simulink仿真建模搞风光储并网控制系统仿真的人都知道,Simulink里那堆复杂的模块看着就头大。不过别慌,咱们今天用最糙的实操方式,手把手拆解这个系统。先来张全家福(不是让你真的拍照&…...

OpenClaw玩转有道云笔记

用通俗语言拆解工作逻辑和实操细节(每步校验、避坑提示),全程贴合新手视角,确保原理易懂、操作能直接落地,解决安装、配置、使用中的各类常见问题。 YoudaoNote Skills 是有道云笔记平台官方提供的OpenClaw插件(类似“功能扩展工具”),核心作用是“让 OpenClaw 能直接…...

小程序毕业设计-基于微信小程序的乡村治理数字化平台的设计与实现

基于微信小程序的乡村治理数字化平台的设计与实现技术说明: 用户前端:微信小程序原生框架 管理前端Vue.js 服务端(后端):基于java的Sprinboot框架 数据库:MySQL 功能说明: 小程序端 1.轮播图片 2.乡村资讯乡村快讯春耕播种政策服务预警信息 3.乡村服务-预约户籍办理婚姻登记土地…...

SAM2:使用mask作为提示输入,实现VOS视频分割

8k50o45u_seg目录 1. 引言 2. 使用SAM2实现VOS任务 2.1 数据集 2.2 主要函数 2.3 主要代码 3. 结果展示 1. 引言 本文尝试使用SAM2模型来实现VOS任务。由于在官方的github代码中只找到了point或者box作为提示,但是论文中却说明是可以输入mask作为提示的&#…...

vue+uniapp小程序Python美食菜品点餐订单系统

目录 技术选型与架构设计前端功能模块划分后端API开发关键实现细节测试与部署 项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 技术选型与架构设计 前端采用Vue.jsUniapp框架,实现跨平台小…...

Element Plus - 在 el-select 的每个选项右侧添加按钮

在 el-select 的每个选项右侧添加按钮 <el-select v-model"formData.encryptMethod" placeholder"请选择加密方式"><el-option v-for"item in encryptMethods" :key"item.value" :label"item.label" :value"i…...

C++编程法则365天(359)lamba是如何捕获变量

文章目录 一、Lambda捕获的核心前提:Lambda的本质是“匿名仿函数” 二、不同捕获方式的实现细节 1. 值捕获([x] 或 [=]) 2. 引用捕获([&x] 或 [&]) 3. 捕获this指针([this] 或 [=]/[&] 在类中) 4. 隐式捕获([=] 或 [&]) 5. C++14新增:初始化捕获([x…...

线性参变(LPV)+输出反馈鲁棒模型预测控制(OFRMPC)+路径跟踪(PTC)

线性参变(LPV)输出反馈鲁棒模型预测控制(OFRMPC)路径跟踪(PTC)&#xff0c;目前能实现20-25m/s的变速单移线&#xff0c;更多工况可自行调试。 考虑速度和侧偏刚度变化,以及质心侧偏角的鲁棒估计&#xff0c;基于二自由度模型和LMI设计输出反馈鲁棒模型预测控制器。 上层考虑输…...

双极板设计经验

1.气体流通方向在双极板中通常有流场的那一面朝里&#xff0c;双极板有出口和入口&#xff0c;气体通过这些垂直进出板子&#xff0c;然后在流场的沟内平行与板子迅速铺满整个流场&#xff0c;再通过流场的肋流向扩散层。2.出入口设计出口的总面积应略大于入口的总面积&#xf…...

Python基础分享:打印各种三角形和九九乘法表

学习编程时&#xff0c;循环和字符串操作是必须掌握的基础知识。通过打印简单的图形&#xff0c;我们可以直观地理解循环的逻辑、字符串的拼接以及格式化输出。本文将以Python为例&#xff0c;详细介绍如何打印正三角形、倒三角形、等腰三角形以及经典的九九乘法表&#xff0c;…...

深度优先搜索:从全排列到记忆化搜索

深度优先搜索&#xff08;DFS&#xff09;的进化之路&#xff1a;从全排列到记忆化搜索 在算法竞赛中&#xff0c;搜索算法是解决问题的基础。然而&#xff0c;面对不同类型的问题&#xff0c;选用错误的 DFS 模型不仅会导致超时&#xff08;TLE&#xff09;&#xff0c;还容易…...

技术深潜:从向量检索到语义对齐——解析天津市南开区天才群策科技有限责任公司的GEO工程化实践

技术前言&#xff1a;当企业营销遭遇模型黑盒 在CSDN的技术社区里&#xff0c;关于GEO的讨论早已从“是什么”转向了“怎么做”。随着各大AI平台算法的快速迭代&#xff0c;传统的SEO技术栈已全面失效。企业面临的核心矛盾在于&#xff1a;大模型的知识更新是非线性的&#xff…...

D3DCompiler_47.dll未被指定在Windows运行的问题解决办法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

一文读懂OpenClaw!开源、可自托管的个人Agent平台

OpenClaw 是 2026 年备受关注的开源 AI Agent 平台&#xff0c;它并非普通的聊天 AI&#xff0c;而是 AI 智能 体理论的成熟工程化实践&#xff0c;不仅能聊天&#xff0c;更能帮你执行具体处理任务。想要用好这一工具&#xff0c;首先要厘清其底层的基础逻辑。 OpenClaw基础概…...

vue2和vue3使用less和scss

文章目录Vue 2 中使用 Less 和 SCSS一、安装依赖二、配置 vue.config.js三、在 .vue 文件中使用Vue 3 中使用 Less 和 SCSS一、安装依赖二、配置 vite.config.js三、在 .vue 文件中使用Vue 2和Vue 3使用差异样式穿透less、scss语法1、变量2、运算3、注释4、嵌套5、混入(Mixin)6…...

3.29不见不散

...

超越 Transformer 的架构前瞻

第六章&#xff1a;未来——超越 Transformer 的架构前瞻Transformer 的成功令人瞩目&#xff0c;但在工程和科学的世界里&#xff0c;没有任何架构是完美的。Transformer 有它的阿喀琉斯之踵&#xff0c;全球顶尖实验室正在积极探索下一代架构。这一章我们来剖析 Transformer …...

面试官最爱问的设计题:动态支付系统设计(策略模式 + 工厂模式 + Spring自动注册)

在 Java 面试中&#xff0c;有一道 非常经典的面向对象设计题&#xff1a;如何设计一个 支持多种支付方式的支付系统&#xff1f;例如&#xff1a;支付宝微信银行卡Apple Pay未来可能新增更多支付方式很多面试者第一反应就是写 if-else&#xff0c;但这其实是一个 典型的设计模…...

部署RHCSA9.7、并完成优化

一、建立虚拟机 1、初步建立 &#xff08;1&#xff09;点击创新的虚拟机 &#xff08;2&#xff09;点击自定义----下一步 &#xff08;3&#xff09;点击稍后安装操作系统----下一步 &#xff08;4&#xff09;点击Linux&#xff08;L&#xff09;----版本选择&#xff08;…...

分享一款高颜值强大的uniapp组件库-图鸟组件库

图鸟UI是一套基于uni-app的组件库&#xff0c;提供了丰富的UI组件和完整的页面模板&#xff0c;可以帮你快速搭建小程序、H5或App。下面整理了官方模板和社区资源的入口&#xff0c;方便你直接选用。 &#x1f3a8; 官方模板系列 图鸟官方提供了多种场景的完整模板&#xff0…...