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

深入解析密钥协商机制:从RSA到SM2的实战应用

1. 密钥协商为什么你的聊天记录别人看不懂你有没有想过当你在网上购物、和朋友聊天、或者登录邮箱时那些在网络上跑来跑去的数据包为什么不怕被别人“偷看”呢比如你输入的银行卡密码理论上任何一个能截获你网络数据的人都能看到一串串的字符但实际上他们看到的只是一堆毫无意义的乱码。这背后的魔法就叫做“密钥协商”。简单来说密钥协商就是通信的双方比如你的手机App和远方的服务器在一个公开的、可能被窃听的环境里悄悄地商量出一个只有他俩才知道的“暗号”。这个“暗号”就是会话密钥之后所有的聊天内容都用这个“暗号”进行加密和解密。即使有坏蛋全程监听他也只能干瞪眼因为协商过程设计得非常巧妙他无法推算出这个最终的“暗号”。这就像你和朋友想在一个嘈杂的咖啡馆里约定一个只有你们俩懂的暗语。你们可以大声地讨论一些公开的规则比如“用今天日期乘以房间号”但最终计算出的那个秘密数字旁边 eavesdropping偷听的人就算听到了所有对话也算不出来。密钥协商机制的核心目的就是为了在身份可信的前提下完美地规避【偷窥】的风险。那么这个神奇的“暗号”是怎么商量出来的呢主要有几种经典的方法今天我们就重点聊聊最常用的两种基于非对称加密的RSA和我们国家大力推广的SM2算法。我会用最直白的话带你弄懂它们的原理并手把手展示如何在实际代码中应用它们。2. 基石非对称加密与密钥协商在深入RSA和SM2之前我们必须先搞懂一个基础概念非对称加密。这是理解整个密钥协商机制的钥匙。想象一下传统的对称加密就像你用一把钥匙锁上保险箱对方必须用同一把钥匙才能打开。这把钥匙在传递过程中如果被偷了那就全完了。非对称加密则完全不同它有两把钥匙一把公钥可以大大方方地发给全世界任何人一把私钥必须由主人死死地藏在手里绝不外泄。它们有一个神奇的特性用公钥加密的内容只有对应的私钥才能解开反过来用私钥签名的内容任何人都可以用公钥来验证其真伪但无法伪造。这就完美解决了“在不安全通道上安全传递信息”的难题。在密钥协商的场景里我们正是利用了“公钥加密私钥解密”这个特性。流程其实非常直观服务器把自己的公钥通常放在数字证书里发给客户端。客户端随机生成一个会话密钥比如一个随机的字符串。客户端用服务器的公钥把这个会话密钥加密变成一堆乱码然后发给服务器。服务器收到乱码后用自己的私钥解密就得到了原始的会话密钥。至此双方就拥有了一个相同的、且从未在网络上以明文形式传输过的会话密钥。后续的所有通信都用这个对称密钥来加密速度又快又安全。下面我们就看看两位“非对称加密”领域的明星选手是如何具体工作的。2.1 RSA历经考验的经典算法RSA可以说是非对称加密的代名词它的名字来源于三位发明者姓氏的首字母。它的安全性基于一个数学难题将一个大整数分解为两个质因数极其困难。比如你能快速算出 221 是由哪两个质数相乘得到的吗13 x 17当这个数字有几百位长时即使用现在最强大的计算机也需要耗费难以想象的时间。RSA密钥协商的实战步骤让我们结合一个典型的HTTPS连接场景看看RSA是如何一步步协商出密钥的。我尽量用代码和比喻让你感受这个过程。服务端准备服务器先生成自己的RSA密钥对公钥和私钥并将公钥放入由权威机构CA签名的数字证书中。这个证书就是服务器的“网络身份证”。客户端连接你的浏览器客户端访问一个HTTPS网站比如https://example.com。证书传递与验证服务器将自己的证书发送给浏览器。浏览器会做一系列严格的检查证书是否在有效期内签发机构是否可信证书中的域名是否与当前访问的域名一致这一步是为了确认“我正在和谁说话”防止连接到假冒的服务器。提取公钥验证通过后浏览器从证书中提取出服务器的RSA公钥。生成并加密会话密钥浏览器随机生成一个用于后续对称加密的会话密钥例如一个AES-256的密钥。然后它使用刚才提取的服务器公钥对这个会话密钥进行加密。发送加密结果浏览器将这个加密后的“会话密钥包”发送给服务器。服务器解密服务器收到后用自己的RSA私钥解密这个包就得到了浏览器生成的同一个会话密钥。至此密钥协商完成双方开始使用这个会话密钥进行高效的对称加密通信。代码示例用Python模拟RSA密钥协商光说原理可能有点抽象我们写点简单的Python代码来模拟一下核心步骤。这里我们使用cryptography这个强大的库。from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import serialization, hashes from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os # 1. 服务端生成RSA密钥对 print(【服务端】正在生成RSA密钥对...) private_key rsa.generate_private_key(public_exponent65537, key_size2048) public_key private_key.public_key() # 2. 模拟客户端拿到公钥 # 在实际中公钥是通过证书传递的。这里我们直接获取。 client_public_key public_key # 3. 客户端生成随机会话密钥例如用于AES-256 print(【客户端】生成随机会话密钥...) session_key os.urandom(32) # 32字节 256位用于AES-256 print(f生成的会话密钥16进制: {session_key.hex()}) # 4. 客户端用服务器公钥加密会话密钥 print(【客户端】使用服务器公钥加密会话密钥...) encrypted_key client_public_key.encrypt( session_key, padding.OAEP( mgfpadding.MGF1(algorithmhashes.SHA256()), algorithmhashes.SHA256(), labelNone ) ) print(f加密后的密钥包长度: {len(encrypted_key)} 字节) # 5. 模拟网络传输加密后的密钥包发送到服务器 # 此处模拟网络传输数据可能被窃听但窃听者无法解密 # 6. 服务器用私钥解密得到会话密钥 print(\n【服务器】收到加密包使用私钥解密...) decrypted_key private_key.decrypt( encrypted_key, padding.OAEP( mgfpadding.MGF1(algorithmhashes.SHA256()), algorithmhashes.SHA256(), labelNone ) ) print(f服务器解密出的会话密钥: {decrypted_key.hex()}) # 7. 验证双方密钥是否一致 if session_key decrypted_key: print(✅ 密钥协商成功客户端与服务器拥有相同的会话密钥。) # 现在可以用这个session_key进行对称加密通信了例如AES # cipher Cipher(algorithms.AES(session_key), modes.GCM(iv)) # ... else: print(❌ 密钥协商失败)运行这段代码你会看到客户端生成了一个随机的密钥用公钥加密后变成了一长串乱码。服务器用私钥解密后得到了完全相同的密钥。这个过程即使被截获攻击者没有私钥也无法解密。RSA的优缺点与适用场景RSA的优势非常明显久经考验应用广泛原理相对直观。几乎所有操作系统、浏览器和库都原生支持RSA集成起来非常方便。在传统的Web HTTPS场景中它长期扮演着核心角色。但它也有明显的短板性能问题RSA的加密和解密特别是解密使用私钥的操作计算量非常大。当服务器每秒要处理成千上万的TLS握手时RSA解密会成为明显的性能瓶颈。前向安全性缺失这是RSA在密钥协商中一个比较严重的问题。什么叫“前向安全性”假设有攻击者录下了今天所有的加密通信流当时他破解不了。但万一有一天服务器的私钥不慎泄露了比如被黑客窃取那么攻击者可以用这个私钥去解密之前所有录下来的通信因为他有了私钥就能解密出当初协商的每一个会话密钥从而破解所有历史记录。这在一些对安全要求极高的场景下是不可接受的。正因为这些缺点尤其是在追求更高性能和前向安全性的现代互联网中RSA在密钥协商领域的核心地位正在被更优的方案替代。2.2 SM2国密算法中的主力军SM2是我们国家密码管理局发布的一系列商用密码算法标准国密算法中的非对称加密算法。它基于椭圆曲线密码学ECC。要理解SM2可以先理解椭圆曲线密码学的一个核心优势在同等安全强度下它所需的密钥长度比RSA短得多。举个例子一个256位的椭圆曲线密钥其安全强度大致相当于一个3072位的RSA密钥。更短的密钥意味着更小的计算量、更快的速度以及更小的网络传输开销。SM2就是在椭圆曲线密码学基础上设计的一套包含数字签名、密钥交换和公钥加密的完整算法体系。SM2密钥协商流程详解SM2的密钥协商流程比RSA直接加密密钥要稍微复杂一些它是一个“交互式”的过程双方需要交换一些中间参数共同计算出一个共享密钥。这个过程通常包含两轮通信确保了协商出的密钥具有前向安全性。我们来看一个简化版的流程描述假设客户端为A服务器为B双方都拥有自己的SM2密钥对。第一轮交换临时公钥客户端A生成一个临时密钥对(rA, RA)其中rA是临时私钥RA是临时公钥椭圆曲线上的一个点。服务器B同样生成一个临时密钥对(rB, RB)。双方交换临时公钥RA和RB。第二轮确认与最终计算双方利用对方的固定公钥、对方的临时公钥、自己的固定私钥、自己的临时私钥以及一些双方都知道的公共信息如用户ID通过一系列规定的椭圆曲线点运算和哈希计算独立地计算出同一个共享密钥。为了防止中间人篡改通常还会交换并验证一些验证值。这个过程虽然步骤多但安全性极高。即使攻击者记录了全部通信过程并且未来某一天拿到了某一方的固定私钥他也无法推算出这次协商的会话密钥因为临时私钥rA/rB在会话结束后就被丢弃了这就是前向安全性。实战使用国产库实现SM2密钥协商由于SM2是国密标准我们需要使用支持国密的库。这里我们用gmssl这个Python库来演示。请注意以下代码是高度简化的演示用于理解流程实际应用需要处理更多边界条件和错误。from gmssl import sm2, func import binascii # 1. 模拟客户端和服务器生成各自的SM2固定密钥对 print(【初始化】生成客户端和服务器的SM2密钥对...) # 使用gmssl库生成密钥对。在实际中私钥应严格保密。 client_sm2 sm2.CryptSM2(private_keyNone, public_keyNone) client_private_key, client_public_key client_sm2.generate_keypair() print(f客户端公钥前64字符: {client_public_key[:64]}...) server_sm2 sm2.CryptSM2(private_keyNone, public_keyNone) server_private_key, server_public_key server_sm2.generate_keypair() print(f服务器公钥前64字符: {server_public_key[:64]}...\n) # 2. 模拟密钥协商流程 # 假设双方已经通过安全方式交换了固定公钥例如通过证书。 # SM2密钥交换函数通常需要自身私钥对方公钥以及一些可选参数如ID。 # 这里我们使用一个简化的协商函数注gmssl的SM2密钥交换API可能需要更复杂的参数设置 # 以下代码展示概念实际调用请参考gmssl官方文档和国标规范。 print(【客户端】开始计算协商密钥...) # 客户端使用自己的私钥和服务器的公钥进行计算 # 在实际的SM2密钥交换协议中这里会生成临时密钥对并进行两轮交互。 # 为简化演示我们直接使用gmssl中可能提供的密钥协商函数具体函数名需查文档。 # client_shared_key client_sm2.compute_key(server_public_key, client_private_key, ...) print(【服务器】开始计算协商密钥...) # 服务器使用自己的私钥和客户端的公钥进行计算 # server_shared_key server_sm2.compute_key(client_public_key, server_private_key, ...) print(\n⚠️ 注意完整的SM2密钥协商代码涉及多轮交互和复杂参数此处为原理演示。) print(在实际开发中请务必使用成熟的密码库如GmSSL的C/CPP库或经过审计的Java/Go国密实现) print(并严格遵循《GMT 0003.3-2012 SM2椭圆曲线公钥密码算法第3部分密钥交换协议》标准。) # 假设协商成功双方会得到相同的shared_key # if client_shared_key server_shared_key: # print(✅ SM2密钥协商成功) # else: # print(❌ 协商失败)SM2的优势与挑战SM2的优势非常突出安全性高基于ECC数学难题与RSA不同能抵抗量子计算机以外的已知大规模攻击。性能好密钥短计算速度快尤其在计算资源有限的物联网设备上优势明显。前向安全标准的SM2密钥交换协议支持前向安全性。符合国密标准在金融、政务、关键基础设施等有合规要求的领域使用SM2是必然选择。当然它的挑战主要在于生态和兼容性生态相对年轻虽然支持越来越广泛但相比RSA一些老的系统、海外开源库或云服务可能没有原生支持SM2。集成复杂度需要处理国密证书链使用国密SM2/SM3/SM9算法的证书与传统的RSA证书体系不同。3. 对比与选择RSA vs. SM2我该用谁了解了两种算法的原理和实现我们在实际项目中该如何选择呢我根据自己的经验整理了一个对比表格你可以一目了然地看到它们的区别。特性维度RSA (用于密钥交换)SM2 (用于密钥交换)说明与建议安全基础大整数分解难题椭圆曲线离散对数难题两者在当前计算能力下均安全但ECC在抗量子计算前景上理论更优。密钥长度长 (2048位起)短 (256位)SM2的256位密钥强度约等于RSA 3072位。更短的密钥带来存储和传输优势。性能较慢特别是解密操作较快加解密和协商速度优势明显在高并发TLS握手场景下SM2能显著降低服务器CPU负载。前向安全性不支持(单纯加密传输密钥时)支持(遵循标准密钥交换协议时)若对历史通信保密有极高要求应选择支持前向安全的方案。SM2原生支持。标准化与合规国际通用标准 (PKCS#1, RFC等)中国商用密码标准 (GMT系列)在国内金融、政务、能源等行业使用国密算法是政策合规要求。生态与兼容性极好全球软硬件广泛支持快速成长中国内生态完善国际兼容需额外处理开发面向全球的应用RSA兼容性无忧纯国内或可控环境可优先SM2。典型应用场景传统Web服务器HTTPS、历史系统、需要最大兼容性的场景新金融系统、电子政务、物联网设备、有国密合规要求的项目场景决定技术选型。如何做出选择我给你几条接地气的建议合规优先如果你的项目属于国内的金融、政务、关键信息基础设施等领域或者甲方明确要求那么必须优先采用SM2等国密算法。这是硬性要求没有商量余地。性能与安全驱动如果你在为一个全新的、对性能敏感且注重前向安全性的系统做设计比如高并发的微服务API网关、移动App后端那么SM2是更优的技术选择。它的性能优势和前向安全性是实实在在的。兼容性考量如果你的服务需要面向全球用户或者需要与大量海外第三方系统、老旧系统对接那么RSA可能仍是更稳妥的初期选择以确保最大的兼容性。不过也可以考虑采用“双算法”套件优先使用SM2同时兼容RSA作为备选。逐步迁移对于已有系统如果原来使用RSA不必急于一刀切。可以制定迁移计划在新模块、新接口中率先使用SM2或者在新采购的硬件、软件中要求支持国密逐步完成算法的平滑升级。我个人的经验是在新项目中尤其是国内项目我会更倾向于使用SM2。它不仅代表了技术发展的趋势性能更好也能满足未来的合规需求。踩过几次兼容性的坑之后我发现只要提前规划好证书体系和依赖库集成SM2并没有想象中那么困难。4. 超越非对称DH算法与PSK预共享密钥虽然RSA和SM2是密钥协商的绝对主力但了解其他机制能让你在架构设计时有更多选择。这里再简单提两种重要的类型。DH算法纯粹的密钥交换艺术Diffie-HellmanDH算法非常巧妙它不依赖于加密和解密而是基于离散对数难题。双方在不传输密钥本身的情况下通过交换一些公开参数就能各自计算出一个相同的共享秘密。它的最大特点是即使通信被全程窃听攻击者也无法计算出最终的密钥。它的核心流程就像之前提到的Alice和Bob的例子他们公开约定一个大质数p和一个基数g然后各自选择一个秘密数字a和b计算并交换g^a mod p和g^b mod p。最后Alice用收到的值计算(g^b)^a mod pBob计算(g^a)^b mod p根据模幂运算的性质两者结果相等这个结果就是共享密钥。全程秘密的a和b从未传输。DH的缺点是它本身不提供身份认证容易遭受中间人攻击。因此在实际中如TLSDH会与数字签名如RSA或ECDSA签名结合使用形成DHE临时DH或ECDHE椭圆曲线临时DH。ECDHE是目前现代TLS连接中最推荐、使用最广泛的密钥交换机制因为它同时具备了前向安全性和ECC的高性能。PSK简单高效的预共享密钥PSKPre-Shared Key模式就简单粗暴得多。它不涉及任何复杂的非对称数学运算。原理就是通信双方在开始通信之前就已经通过某种安全的方式比如线下拷贝、安全信道分发共享了一个或多个密钥。协商时客户端只需要说“我要用ID是key_001的那个密钥。” 服务器查一下自己的密钥表如果有就用它如果没有就拒绝连接。之后双方就用这个预先共享的密钥进行对称加密通信。它的优势非常明显速度快、计算开销极小非常适合计算能力受限的物联网设备或者内部微服务之间已知身份的通信。缺点也很致命密钥分发和管理非常麻烦。每增加一个客户端就需要安全地分发一次密钥一旦一个密钥泄露必须更新所有相关设备的密钥。因此PSK通常用在可控的、封闭的或小规模场景中。5. 实战中的关键要点与避坑指南理论懂了代码跑了但在真实项目里用起来还是有不少坑。我结合自己遇到过的实际问题给你几点非常重要的提醒。1. 密钥长度与参数安全RSA密钥长度绝对不要使用低于2048位的密钥。1024位RSA在现代计算能力下已不再安全。对于长期使用的系统建议直接使用3072位或4096位。DH参数如果使用DH质数p必须足够大且是安全的质数生成元g也要选择得当。切勿使用网上找的或自己随意生成的弱参数。应该使用业界公认的安全质数如RFC 3526中定义的Oakley组或者使用椭圆曲线DHECDH其曲线参数是标准化的更安全省心。SM2曲线SM2使用的是国家密码管理局指定的标准椭圆曲线参数无需自己选择直接使用标准参数即可这是它的一个便利之处。2. 永远使用标准库和经过审计的实现密码学是一个“魔鬼在细节中”的领域。自己动手实现RSA或椭圆曲线运算几乎一定会引入致命的安全漏洞比如侧信道攻击通过计时、功耗等分析破解密钥。务必使用你所用编程语言中广泛受信任、经过长期实战检验的密码学库如Python:cryptography,gmssl(国密)Java: Bouncy Castle, JDK内置安全提供者Go:crypto/rsa,crypto/elliptic以及国密的github.com/tjfoc/gmsmC/C: OpenSSL, GmSSL并且保持这些库的更新以获取安全补丁。3. 理解并启用前向安全性这是现代安全通信的黄金标准。确保你的TLS/SSL配置中优先使用支持前向安全的密钥交换算法套件例如ECDHE_RSA或ECDHE_ECDSA。对于国密环境则使用基于SM2的密钥交换协议。在Nginx、Apache等服务器的配置中检查并调整ssl_ciphers指令将包含DHE和ECDHE的套件排在前面禁用不安全的静态RSA密钥交换。4. 国密改造的循序渐进如果你需要将一个现有系统从国际算法改造为国密算法不要试图一次性全部替换。建议的路径是先改造服务端让服务端同时支持国际算法套件和国密算法套件。客户端分步升级先升级那些可控的、内部的客户端如企业App、内部系统使用国密套件连接。保持兼容对外服务在一段长时期内保持双算法支持给外部客户端足够的升级时间。最终切换当所有主要客户端都支持国密后再将国际算法套件降级为备选或禁用。这个过程需要仔细的测试和规划特别是证书链国密证书通常采用双证书体系签名证书和加密证书的管理和客户端的兼容性处理。多测试多验证这是平稳过渡的唯一法门。

相关文章:

深入解析密钥协商机制:从RSA到SM2的实战应用

1. 密钥协商:为什么你的聊天记录别人看不懂? 你有没有想过,当你在网上购物、和朋友聊天、或者登录邮箱时,那些在网络上跑来跑去的数据包,为什么不怕被别人“偷看”呢?比如,你输入的银行卡密码&a…...

OpenBMC sdbusplus接口实战:从服务注册到多接口管理

1. 初识sdbusplus:你的BMC服务开发起点 如果你正在为OpenBMC开发一个新的管理功能,比如监控机箱温度、控制风扇转速,或者实现一个自定义的硬件健康检查服务,那么你迟早要和D-Bus打交道。在OpenBMC的世界里,sdbusplus就…...

【交互式分割】从零到一:基于Mask Guidance的迭代训练实战与性能优化

1. 为什么我们需要Mask Guidance?从交互式分割的痛点说起 想象一下,你正在用Photoshop抠图,面对一张毛发边缘复杂的小猫照片,你用魔棒工具点一下,结果要么选多了背景,要么漏掉了毛发尖。你不得不反复调整容…...

深入解析ACK、NACK与REX:网络通信中的重传机制与优化策略

1. 从“收到请回复”说起:网络世界的确认与重传 不知道你有没有玩过那种需要“收到请回复”的群聊。你发出一条重要通知,如果没人吭声,你心里就会打鼓:他们到底看没看到?这时候,你可能会所有人,…...

阿里云ECS实战:Ollama云端部署与跨网络本地调用全解析

1. 为什么要把Ollama放到云端?聊聊我的真实想法 你可能和我一样,最开始接触大模型都是在自己的电脑上跑。装个Ollama,拉个几B的小模型,玩玩对话,感觉挺酷。但很快,问题就来了:我的MacBook Pro风…...

Windows下利用Docker容器化技术实现多EasyConnect实例共存

1. 为什么我们需要在Windows上运行多个EasyConnect? 如果你和我一样,是个经常需要穿梭在不同项目、不同办公环境之间的打工人,那你肯定对EasyConnect这个软件又爱又恨。爱它,是因为它确实是我们连接公司内网、访问内部资源的“通行…...

从被动防御到主动免疫:IPDRR模型如何重塑企业网络安全韧性

1. 从“筑高墙”到“强免疫”:为什么你的企业安全需要一次思维升级 我见过太多企业,在安全建设上投入不菲,买最好的防火墙、最贵的入侵检测系统,安全策略文档堆起来能有一人高。但真出了事,比如一次勒索病毒攻击&#…...

HanLP 2.x 多任务模型实战:从安装到文本分析全流程

1. 为什么你需要HanLP 2.x的多任务模型? 如果你正在处理中文文本,比如想从一堆新闻里自动提取关键信息,或者给你的聊天机器人加上理解用户意图的能力,那你很可能需要一套好用的自然语言处理(NLP)工具。几年…...

LingJing(灵境)与外部虚拟机的网络穿透实战:从NAT困境到桥接畅通

1. 为什么你的反向Shell总是“失联”?从NAT困境说起 如果你和我一样,是个喜欢在本地搭建渗透测试环境的爱好者,那你肯定遇到过这个让人抓狂的场景:在LingJing(灵境)靶场里,靶机明明启动了&#…...

BEYOND REALITY Z-Image作品分享:自然光人像系列——晨光/正午/黄昏三种氛围呈现

BEYOND REALITY Z-Image作品分享:自然光人像系列——晨光/正午/黄昏三种氛围呈现 1. 引言:当光影遇见AI人像 你有没有想过,一张AI生成的人像照片,能有多真实? 不是那种一眼就能看出来的“AI感”,而是光影…...

告别“发光纸片人”:Substance 3D 与 Unity 2D URP 联动的次世代 2D 动态光照与法线手绘工作流

上周某日下午,一位担任核心技术美术的朋友,在微信上给我发了一段他们最新类银河恶魔城游戏的内部测试视频,并附带了一长串抓狂的语音。他们团队耗巨资请了顶级的二次元原画师,为游戏主角绘制了极其精美的立绘和 Spine 切片。可是&…...

人工智能混合编程实践:C++调用封装好的DLL进行PP-OCR字符识别

人工智能混合编程实践:C++调用封装好的DLL进行PP-OCR字符识别 前言 相关介绍 C++简介 ONNX简介 ONNX Runtime 简介 **核心特点** DLL 简介 **核心特点** **创建与使用** **应用场景** **优点与挑战** OCR字符识别简介 1. 核心工作原理 2. 技术演进 3. 主要应用场景 4. 当前面临…...

互联网大数据环境下 MySQL 迁移至国产底座的技术实践与路径观察

互联网大数据环境下 MySQL 迁移至国产底座的技术实践与路径观察 在当前互联网大数据应用持续深化的背景下,企业对关系型数据库的性能稳定性、安全合规性及运维可控性提出了更高要求。随着技术体系日趋成熟,金仓数据库(KingbaseES&#xff09…...

YOLOv8全网首发:CVPR2026 Transformer注意力 | BinaryAttention 1-bit注意力,推理提速100%,超越FlashAttention2

💡💡💡问题点:Transformer 已取得广泛而显著的成功,但其注意力模块的计算复杂性仍然是视觉任务的主要瓶颈。现有方法主要采用 8-bit 或 4-bit 量化来平衡效率与精度 💡💡💡措施:我们通过理论论证指出,注意力的二值化保留了基本的相似性关系,并提出了 BinaryAt…...

论文查重 / AI 率双杀攻略:Paperxie 四大降重方案实测,从 99.8% 到 14.9% 的通关密码

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/aippthttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 前言:毕业季新噩梦 ——AI 率超标,比查重更让人崩溃的学术红线 当毕业论文终于写完&#xff…...

Highcharts React v4.2.1 正式发布:更自然的React开发体验,更清晰的数据处理

Highcharts React v4.2.1 版本正式发布了!这次更新不仅带来了错误修复和新功能,更重要的是对组件文档进行了全面重写。这体现了我们持续的努力——让使用 Highcharts 的 React 开发者能够获得更加自然、顺畅的开发体验。如果你一直在等待尝试新的集成&am…...

OpenClaw 生成测试用例

在安装完 OpenClaw 后,很多同学只会用它聊天。今天十二就带大家通过安装 Skill,让 OpenClaw 真正变成一个能理解业务、自动写用例的测试专家。 1、查找:测试用例生成Skills 全网 Skill 太多,不知道哪个生成的用例最靠谱。这里使用十二之前安装好的 find-skills 查找测试用…...

计算机毕业设计springboot数字化心理健康服务系统的设计与实现 基于SpringBoot的“树洞“心理咨询服务平台的设计与实现 基于SpringBoot的在线心理支持与智慧辅导平台

计算机毕业设计springboot数字化心理健康服务系统的设计与实现a2huw9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。近年来,心理健康问题呈直线上升趋势&#xff0c…...

DO-254通读--10.0 硬件设计生命周期数据

10.0 硬件设计生命周期数据 本节描述了在硬件设计生命周期中可能产生的硬件设计生命周期数据项,用于提供设计保证和符合审定要求的证据。审定机构作为设计保证证据所需的生命周期数据的范围、数量和详细程度将因多种因素而异。这些因素包括适用的航空系统审定机构要…...

蓝牙学习系列(一):从零认识蓝牙技术体系

目录 一、什么是蓝牙(Bluetooth) 二、蓝牙的发展版本 三、Classic Bluetooth 与 BLE 3.1 Classic Bluetooth(经典蓝牙) 3.2 BLE(Bluetooth Low Energy) 四、蓝牙设备角色 4.1 Classic Bluetooth 4.…...

成都双流整装工厂,哪家才是靠谱企业?

家人们,在成都双流找靠谱的整装工厂可真是一件让人头疼的事儿!市面上的装修公司五花八门,一不小心就容易踩坑。今天我就用自己的亲身经历,给大家好好唠唠哪家整装工厂才是真靠谱,那就是九天全屋整装!我家就…...

用python flask做了一个,批量查询,修改一堆excel文件的工具

每次要找在excel里面找文件时,都一个个打开,找半天。要修改时,一些类似的数据,又要一个个文件去修改,非常没有效率。这个工具作用就是批量查询与修改。B/S架构,读出来的excel常驻内存,注意&…...

基于LQR控制的主动悬架模型:构建平顺性仿真,涵盖多种车辆模型与源文件集

【被动/LQR主动悬架模型】采用LQR控制的主动悬架模型,选取车身加速度、悬架动挠度等参数构造线性二次型最优控制目标函数。 输入为B级随机路面激励,输出为车身垂向加速度、俯仰角加速度、悬架动挠度等平顺性评价指标,可做汽车平顺性仿真。 二…...

jQuery如何扩展百度WebUploader组件支持教育行业PPT课件的跨平台分片上传?

前端老兵的20G文件夹上传血泪史(附部分代码) 各位前端同仁们好,我是老王,一个在福建靠写代码混口饭吃的"前端民工"。最近接了个奇葩项目,客户要求用原生JS实现20G文件夹上传下载,还要兼容IE9&am…...

Android 15 深色模式:第三方应用强制适配深色模式的开关在哪里?

很多朋友在打开手机的深色模式(也叫暗黑模式)后,可能会发现一个问题:手机自己的界面和自带应用都变黑了,但很多常用的第三方软件,比如微信、淘宝或者一些银行APP,却还是亮晃晃的白色背景。这不仅…...

双向RRT算法的三维路径规划MATLAB代码:包含路径平滑处理

bi-rrt算法三维MATLAB代码 双向rrt算法的三维路径规划 加入路径的平滑处理直接打开MATLAB开整三维空间路径规划。双向RRT(Bi-RRT)这玩意儿比传统RRT快不是一点半点,核心思路就是两头长树往中间怼。咱们先看节点数据结构怎么设计: …...

“扫频法阻抗扫描验证及复现双馈风机MMC电压源型VSG阻抗建模与程序注释

扫频法 阻抗扫描 阻抗建模验证 正负序阻抗 逆变器 虚拟同步控制 VSG 复现 双馈风机MMC 电压源型VSG阻抗建模及阻抗扫描验证 虚拟同步发电机序阻抗建模 风机多端MMC 可设置扫描范围、扫描点数,附送讲解 程序附带注释,每一行都能看懂 包括vsg仿真模型&…...

【异常】OpenClaw 调用 API 限速报错 API rate limit reached. Please try again later.

一、报错内容 在使用 OpenClaw 进行接口调用时,系统返回以下报错信息: API rate limit reached. Please try again later. 同时提示当前订阅套餐已达到调用限额,需等待周期刷新或升级套餐,建议5小时后重新进行交互操作。 二、报错说明 1. 报错核心含义 本次报错的核心是…...

声源定位实战:从仿真到嵌入式落地

2022声源定位相关资料及代码 内附声源定位算法基本原理及matlab仿真原理及实现方法; stm32f4实现源码(2022电赛) 3米处水平横向精度0.013m(可优化更低)。 视频5s,无快进,mcu为stm32f429zit6。 …...

AI人脸隐私卫士实测:多人合照自动打码,效果惊艳

AI人脸隐私卫士实测:多人合照自动打码,效果惊艳 1. 引言:当合照遇上隐私,AI如何成为你的守护者? 你有没有过这样的经历?公司团建拍了张大合照,想发朋友圈分享喜悦,却要花上十几分钟…...