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

非对称加密算法-ECDHE

目录

1. ECDHE算法简介

密钥交换算法的重要性

ECDHE算法的基本原理

2. ECDHE与RSA算法的比较

RSA算法

ECDHE算法

比较

图形结合

2. HTTPS中的密钥交换

RSA算法的局限性

前向安全性的概念

图形结合

3. 离散对数问题

离散对数的定义

离散对数在密码学中的应用

图形结合

4. DH算法

DH算法的基本原理

DH算法在密钥交换中的作用

图形结合

5. 指数与对数的关系

指数运算的基本概念

对数运算的基本概念

指数与对数互为逆运算

图形结合

应用示例

6. ECDHE算法的数学基础

椭圆曲线的引入

椭圆曲线上的离散对数问题

图形结合

ECDHE算法的数学基础

7. ECDHE算法的流程

密钥生成过程

密钥交换过程

图形结合

8. ECDHE算法的安全性

为什么ECDHE算法具有前向安全性

图形结合

9. ECDHE算法的实际应用

在HTTPS中的使用情况

与其他密码学技术的结合

图形结合

10. 总结

ECDHE算法的优势

未来发展趋势

图形结合


ECDHE算法,即椭圆曲线迪菲-赫尔曼(Elliptic Curve Diffie-Hellman Ephemeral)密钥交换算法,是一种基于椭圆曲线密码学的安全协议,用于在通信双方之间安全地交换密钥。以下是对ECDHE算法及其与RSA算法比较的重点解析:

1. ECDHE算法简介

密钥交换算法的重要性

密钥交换算法是现代加密通信的基础。它允许两个通信方在不安全的通道上安全地建立一个共享的密钥,而无需事先共享任何秘密信息。这个共享密钥随后可以用于加密和解密双方的通信,确保数据的机密性和完整性。

ECDHE算法的基本原理

ECDHE算法基于椭圆曲线加密(ECC)和迪菲-赫尔曼密钥交换(DH)的概念。它使用椭圆曲线上的数学运算来生成密钥对,并在通信双方之间交换公钥,从而在不直接传输密钥的情况下生成一个共享的密钥。

2. ECDHE与RSA算法的比较

RSA算法

RSA是一种广泛使用的非对称加密算法,它基于大整数分解的困难性。RSA算法通常用于密钥交换和数字签名。

ECDHE算法

ECDHE算法使用椭圆曲线上的计算,这使得它在相同安全级别下可以使用更短的密钥,从而提高效率和性能。

比较
  • 性能:ECDHE算法通常比RSA算法更快,因为它需要较小的密钥尺寸,计算量较小。

  • 安全性:ECDHE算法提供了与RSA相当的安全级别,但使用更短的密钥,这在移动设备和性能受限的环境中尤其重要。

  • 前向安全性:ECDHE算法具有前向安全性,这意味着即使长期密钥被泄露,过去的通信记录也不会受到影响。RSA算法不具备这种前向安全性。

图形结合

为了更直观地展示ECDHE算法的工作原理,可以使用Mermaid流程图来描述密钥交换的过程:

这个流程图展示了ECDHE算法中通信双方如何选择椭圆曲线参数、生成密钥对、交换公钥,并最终计算出共享密钥的步骤。

通过上述解析,我们可以看到ECDHE算法在现代加密通信中的重要性,以及它与RSA算法相比的优势。

2. HTTPS中的密钥交换

HTTPS(超文本传输安全协议)是互联网上用于安全通信的标准协议,它通过SSL/TLS(安全套接层/传输层安全)协议来实现数据的加密、身份验证和数据完整性保护。密钥交换是HTTPS中确保安全通信的关键步骤。

RSA算法的局限性

RSA算法是一种广泛使用的公钥加密技术,它基于大整数分解的困难性。然而,RSA算法存在一些局限性:

  • 计算效率:RSA算法的计算复杂度较高,尤其是在使用较大密钥尺寸时,这可能导致性能下降。

  • 密钥尺寸:为了达到相同的安全级别,RSA需要比ECC(椭圆曲线密码学)更大的密钥尺寸,这增加了存储和传输的开销。

  • 量子计算威胁:随着量子计算的发展,RSA算法的安全性可能会受到威胁,因为量子计算机能够更快地分解大整数。

前向安全性的概念

前向安全性是一种密码学属性,它确保即使长期密钥被泄露,过去的通信记录也不会受到影响。具有前向安全性的系统可以保证密钥的泄露不会暴露过去的会话密钥,从而保护历史数据的安全。

ECDHE算法因其前向安全性而成为HTTPS中推荐使用的密钥交换方法。在ECDHE中,每次通信会话都会生成一个新的临时密钥对,即使长期密钥被泄露,也不会影响这些临时密钥的安全性。

图形结合

为了更直观地展示HTTPS中密钥交换的过程,特别是ECDHE算法的前向安全性,可以使用Mermaid流程图来描述:

这个流程图展示了HTTPS中使用ECDHE算法进行密钥交换的步骤,包括客户端和服务器之间的公钥交换、临时密钥对的生成和会话密钥的加密传输。

通过上述解析,我们可以看到RSA算法在HTTPS中的局限性,以及前向安全性在保护通信安全中的重要性。ECDHE算法因其高效的性能和前向安全性,成为现代HTTPS通信的首选密钥交换方法。

3. 离散对数问题

离散对数的定义

离散对数是一个数论问题,它在密码学中非常重要。具体来说,如果我们有一个整数bb、一个整数gg(通常称为基或生成元),以及一个整数yy,那么离散对数问题就是找到一个整数xx,使得: gx≡y(modp)gx≡y(modp) 这里的pp是一个大素数,而≡≡表示同余。离散对数问题在模pp的情况下特别难以解决,这是许多密码系统安全性的基础。

离散对数在密码学中的应用

离散对数问题在密码学中有着广泛的应用,尤其是在公钥加密和数字签名算法中。以下是一些主要的应用场景:

  • ElGamal加密:这是一种基于离散对数问题的公钥加密算法。它利用了在有限域上的离散对数问题的困难性来保证加密的安全性。

  • 迪菲-赫尔曼密钥交换DH:DH算法是第一个广泛使用的公钥加密协议,它允许两个通信方在不安全的通道上建立一个共享的密钥。ECDHE算法是DH算法的一种变体,它使用椭圆曲线来提高安全性和效率。

  • 椭圆曲线密码学(ECC:ECC利用了椭圆曲线上的离散对数问题,提供了一种使用较短密钥但安全性较高的加密方法。

  • 数字签名算法(DSA):DSA是一种基于离散对数问题的数字签名标准,它允许用户用私钥对消息进行签名,而其他人可以用相应的公钥验证签名的有效性。

图形结合

为了更直观地展示离散对数问题的概念,可以使用Mermaid流程图来描述离散对数的求解过程:

这个流程图展示了离散对数问题的定义,以及它在密码学中的多种应用。通过求解离散对数的困难性,密码学算法能够保证通信的安全性和数据的完整性。

4. DH算法

DH算法的基本原理

迪菲-赫尔曼(Diffie-Hellman,简称DH)算法是一种允许两个通信方在不安全的通道上建立共享密钥的密钥交换协议。DH算法基于离散对数问题的计算难度,其基本原理如下:

  1. 选择参数:首先,双方选择一个大素数pp和一个在模pp下生成有限域的生成元gg。

  2. 生成私钥:每个通信方随机生成一个私钥,记为aa和bb。

  3. 生成公钥:每个方将私钥与生成元gg进行指数运算,得到各自的公钥A=gamod  pA=gamodp和B=gbmod  pB=gbmodp。

  4. 交换公钥:双方通过不安全的通道交换各自的公钥。

  5. 计算共享密钥:每个方使用对方的公钥和自己的私钥计算共享密钥,计算结果相同: 共享密钥=Abmod  p=gabmod  p=Bamod  p共享密钥=Abmodp=gabmodp=Bamodp

DH算法在密钥交换中的作用

DH算法的主要作用是在两个通信方之间安全地建立共享密钥,而无需通过安全通道交换密钥。这一特性使得DH算法在以下方面具有重要作用:

  • 安全通信:DH算法允许通信双方在不安全的通道上建立安全通信,因为即使公钥被截获,没有相应的私钥也无法推导出共享密钥。

  • 前向安全性:DH算法每次通信会话都使用新的私钥,因此即使某个会话的密钥被泄露,也不会影响到其他会话的安全性。

  • 多对多通信:DH算法可以扩展到多对多的通信场景,每个通信方只需要与每个其他方交换密钥,而不是与所有其他方共享相同的密钥。

图形结合

使用Mermaid流程图来描述DH算法的密钥交换过程:

这个流程图展示了DH算法中参数的选择、私钥的生成、公钥的交换和共享密钥的计算过程。通过这个过程,通信双方能够在不安全的通道上安全地建立共享密钥,为后续的加密通信提供基础。

5. 指数与对数的关系

指数运算的基本概念

指数运算是一种数学运算,表示为bxbx,其中bb是底数,xx是指数。指数运算描述了底数重复相乘的次数。例如,23=2×2×2=823=2×2×2=8。在密码学中,指数运算常用于生成大数,这些大数在模pp运算下具有复杂的离散对数性质。

对数运算的基本概念

对数运算是指数运算的逆运算。如果bx=ybx=y,那么xx是yy以bb为底的对数,记作x=log⁡b(y)x=logb(y)。对数运算可以帮助我们解决指数运算的逆问题,即给定底数和结果,求出指数。对数运算在数学和科学中有广泛的应用,包括解决实际问题和进行复杂计算。

指数与对数互为逆运算

指数运算和对数运算是互逆的,这意味着它们可以相互抵消。如果你先进行指数运算,然后对结果取对数,你会得到原始的指数值。例如,如果y=2xy=2x,那么x=log⁡2(y)x=log2(y)。这种关系在密码学中非常重要,因为离散对数问题的困难性是许多加密算法安全性的基础。

图形结合

使用Mermaid流程图来描述指数和对数运算的互逆关系:

这个流程图展示了指数运算和对数运算如何互为逆运算。在密码学中,这种互逆关系被用来构建加密算法,其中指数运算通常用于生成密钥,而对数运算的困难性用于保护密钥不被破解。

应用示例

在密码学中,指数和对数运算的一个典型应用是RSA加密算法。在RSA中,公钥和私钥的生成涉及到大数的指数运算。而离散对数问题,即在模pp下求解gx≡y(modp)gx≡y(modp),是密码学中一个非常困难的问题,它为RSA算法提供了安全性。尽管如此,现代密码学研究正在探索更高效的算法和量子计算对现有密码体系的潜在影响。

6. ECDHE算法的数学基础

椭圆曲线的引入

椭圆曲线密码学(ECC)是一种基于椭圆曲线数学的公钥密码体系。椭圆曲线是平面上的曲线,可以表示为一个方程,最常见的形式是Weierstrass方程: y2=x3+ax+by2=x3+ax+b 其中,aa 和 bb 是常数,且曲线满足一些特定的条件,例如4a^3 + 27b^2 ≠ 0,以确保没有重根。

椭圆曲线在密码学中的优势包括:

  • 较小的密钥尺寸:与RSA等其他公钥系统相比,ECC可以使用更小的密钥尺寸提供相同或更高的安全性。

  • 抗量子计算攻击:ECC被认为比RSA更能抵抗量子计算机的攻击。

椭圆曲线上的离散对数问题

在椭圆曲线上,离散对数问题可以表述为:给定一个椭圆曲线上的点GG(基点或生成元),以及另一个点PP,找到整数kk,使得: kG=PkG=P 这里的乘法是椭圆曲线上的点加法的重复应用。椭圆曲线上的离散对数问题被认为比普通离散对数问题更难解决,这为基于ECC的密码系统提供了安全性。

图形结合

使用Mermaid流程图来描述椭圆曲线上的点加法和离散对数问题:

这个流程图展示了如何通过点加法从基点GG生成点PP,以及求解椭圆曲线上的离散对数问题。

ECDHE算法的数学基础

ECDHE算法利用椭圆曲线上的离散对数问题来安全地交换密钥。以下是ECDHE算法的数学基础:

  1. 选择椭圆曲线:选择一个椭圆曲线和其上的一个基点GG。

  2. 生成私钥:每个通信方随机生成一个私钥aa和bb。

  3. 计算公钥:每个方计算其公钥A=aGA=aG和B=bGB=bG。

  4. 交换公钥:通信双方交换公钥。

  5. 计算共享密钥:双方各自计算共享密钥,使用对方的公钥和自己的私钥: 共享密钥=Ba=bA=b(aG)=abG=Ab共享密钥=Ba=bA=b(aG)=abG=Ab

通过这种方式,ECDHE算法能够在不直接传输密钥的情况下,在通信双方之间安全地建立共享密钥,为加密通信提供基础。

7. ECDHE算法的流程

ECDHE算法的流程主要包括密钥生成和密钥交换两个阶段。以下是这两个阶段的详细描述:

密钥生成过程
  1. 选择椭圆曲线参数:首先,选择一个椭圆曲线EE和其上的一个基点GG。这些参数是公开的,并且通常由标准组织定义。

  2. 生成私钥:每个通信方随机生成一个私钥dd,这是一个大的随机整数。私钥必须保密,不能泄露给任何第三方。

  3. 计算公钥:每个通信方使用其私钥和基点计算公钥QQ。公钥的计算公式为: Q=d⋅GQ=d⋅G 这里的乘法是椭圆曲线上的点加法。

密钥交换过程
  1. 交换公钥:通信双方通过不安全的通道交换各自的公钥,但保留各自的私钥。

  2. 生成共享密钥:每个方使用对方的公钥和自己的私钥来计算共享密钥。计算公式为: 共享密钥=对方公钥⋅自己的私钥共享密钥=对方公钥⋅自己的私钥 例如,如果通信方A的私钥是dAdA,公钥是QAQA,通信方B的公钥是QBQB,则: 共享密钥=QB⋅dA=dA⋅QB共享密钥=QB⋅dA=dA⋅QB

  3. 验证和使用共享密钥:双方现在都有相同的共享密钥,可以用于加密和解密消息,或作为其他加密算法的密钥材料。

图形结合

使用Mermaid流程图来描述ECDHE算法的密钥生成和交换过程:

这个流程图展示了ECDHE算法中椭圆曲线参数的选择、私钥的生成、公钥的计算、公钥的交换以及共享密钥的计算过程。通过这个过程,通信双方能够在不直接传输私钥的情况下安全地建立共享密钥。

8. ECDHE算法的安全性

为什么ECDHE算法具有前向安全性

ECDHE算法的前向安全性是指即使长期密钥或私钥在未来被泄露,也不会影响过去通信的安全性。这种特性主要归功于以下几个方面:

  1. 临时密钥对:在ECDHE算法中,每次通信会话都会生成一个新的临时密钥对(即私钥和公钥)。这意味着即使某个会话的临时私钥被泄露,它也不会影响其他会话的安全性,因为每个会话的密钥对都是独立的。

  2. 无长期密钥传输:ECDHE算法不需要在通信双方之间传输长期密钥。共享密钥是通过双方各自的临时私钥和对方的临时公钥计算得出的,因此长期密钥的安全性不会受到威胁。

  3. 离散对数难题:ECDHE算法的安全性基于椭圆曲线上的离散对数难题。即使攻击者截获了通信双方的公钥,没有相应的私钥,他们也无法计算出共享密钥,因为椭圆曲线上的离散对数问题被认为非常难以解决。

  4. 密钥交换不重用:在ECDHE中,密钥交换的密钥(即临时公钥和私钥)仅用于一次会话,并且在会话结束后就不再使用。这进一步减少了密钥被破解的风险。

  5. 密钥派生函数:共享密钥通常通过密钥派生函数(KDF)进一步处理,以生成用于实际通信的会话密钥。这个过程增加了密钥材料的复杂性和安全性。

图形结合

使用Mermaid流程图来描述ECDHE算法的前向安全性:

这个流程图展示了ECDHE算法如何通过使用临时密钥对和不重用密钥来确保前向安全性。即使长期密钥或某个会话的临时密钥泄露,过去的通信仍然保持安全,因为每个会话都使用独立的密钥对。

9. ECDHE算法的实际应用

在HTTPS中的使用情况

ECDHE算法在HTTPS协议中的应用是为了在客户端和服务器之间安全地协商出一个共享的会话密钥,用于加密和解密传输的数据。以下是ECDHE在HTTPS中的具体应用步骤:

  1. TLS握手:当客户端发起HTTPS连接请求时,TLS(传输层安全性协议)握手过程开始。

  2. 服务器参数:服务器响应客户端,发送其TLS证书和支持的加密参数,包括椭圆曲线参数和基点。

  3. 客户端选择:客户端选择一个支持的椭圆曲线,并生成一个新的临时密钥对,将公钥发送给服务器。

  4. 密钥交换:服务器也生成自己的临时密钥对,并使用客户端的临时公钥和自己的临时私钥计算共享密钥。

  5. 密钥验证:双方可以使用交换的密钥材料进行密钥验证,确保密钥交换的安全性。

  6. 会话加密:一旦共享密钥生成并验证,它将用于加密和解密随后的通信。

与其他密码学技术的结合

ECDHE算法通常与其他密码学技术结合使用,以提供全面的安全解决方案:

  1. 混合加密:ECDHE通常与对称加密算法(如AES)结合使用。共享密钥用于生成对称加密算法的密钥。

  2. 数字签名:ECDHE可以与数字签名算法(如ECDSA)结合使用,以验证服务器的身份并确保数据的完整性。

  3. 密钥派生:共享密钥可以通过密钥派生函数(KDF)进一步派生出多个密钥,用于不同的安全目的,如消息加密、身份验证等。

  4. 密钥更新:在长连接或长时间通信中,可以使用ECDHE定期更新共享密钥,以增强安全性。

  5. 跨平台支持:ECDHE算法支持跨平台和跨设备的安全通信,因为它依赖于标准化的椭圆曲线参数。

图形结合

使用Mermaid流程图来描述ECDHE算法在HTTPS中的实际应用:

 

这个流程图展示了ECDHE算法如何在HTTPS中用于安全地协商共享密钥,并与其他密码学技术结合以确保通信的安全性和完整性。通过这种方式,ECDHE算法为现代网络安全通信提供了坚实的基础。

10. 总结

ECDHE算法的优势
  1. 高安全性:ECDHE算法基于椭圆曲线上的离散对数问题,这是一个被认为难以解决的数学问题,为密码系统提供了强大的安全性。

  2. 前向安全性:每次通信会话使用独立的临时密钥对,即使长期密钥泄露,也不会影响过去的通信安全。

  3. 较小的密钥尺寸:与RSA等传统公钥算法相比,ECDHE算法可以使用更小的密钥尺寸,提供相同或更高的安全级别,这有助于减少存储和传输的开销。

  4. 计算效率:ECC的计算复杂度较低,使得ECDHE算法在计算资源有限的环境下(如移动设备)更加高效。

  5. 兼容性:ECDHE算法广泛支持现代的浏览器和服务器,确保了良好的兼容性和互操作性。

未来发展趋势
  1. 量子计算的挑战:随着量子计算技术的发展,传统密码学算法(包括ECDHE)可能面临新的安全挑战。研究者正在探索后量子密码学算法,以抵御量子计算机的潜在威胁。

  2. 性能优化:尽管ECDHE算法已经相对高效,但持续的性能优化仍然是一个研究方向,特别是在物联网(IoT)设备和边缘计算环境中。

  3. 标准化进程:随着新的椭圆曲线和参数的提出,ECDHE算法的标准化进程将继续发展,以确保算法的安全性和互操作性。

  4. 跨平台应用:ECDHE算法将继续扩展到新的平台和应用场景,如云计算、移动通信和智能家居等。

  5. 集成安全解决方案:ECDHE算法可能会与其他安全技术和协议(如数字签名、身份验证协议等)更紧密地集成,以提供更全面的安全解决方案。

图形结合

使用Mermaid流程图来描述ECDHE算法的优势和未来发展趋势:

这个流程图概括了ECDHE算法的主要优势和面对未来技术发展可能的走向。随着技术的不断进步,ECDHE算法将继续在确保网络安全通信方面发挥关键作用。

相关文章:

非对称加密算法-ECDHE

目录 1. ECDHE算法简介 密钥交换算法的重要性 ECDHE算法的基本原理 2. ECDHE与RSA算法的比较 RSA算法 ECDHE算法 比较 图形结合 2. HTTPS中的密钥交换 RSA算法的局限性 前向安全性的概念 图形结合 3. 离散对数问题 离散对数的定义 离散对数在密码学中的应用 图…...

10分钟学会Docker的安装和使用

前言 在现代软件开发中,Docker作为一种轻量级的容器化技术,已成为开发者必备的工具之一。本文将带您在10分钟内快速掌握Docker的安装和基本使用方法。 1. Docker是什么? Docker是一种开源的容器化平台,它通过将应用程序及其所有…...

江科大/江协科技 STM32学习笔记P20

文章目录 编码器接口测速定时器有关的库函数Encoder.cmain.c 编码器接口测速 编码器接口的初始化,第一步,RCC开启时钟,开启GPIO和定时器的时钟,第二步,配置GPIO,这里把PA6和PA7配置成输入模式,第…...

CSS 实现两边固定宽,中间自适应

0. **Flexbox 实现**&#xff1a; css复制代码.container { display: flex; } ​ .fixed { width: 200px; /* 两边固定宽度 */ } ​ .flexible { flex: 1; /* 中间自适应 */ } html复制代码<div class…...

C#图片批量下载Demo

目录 效果 项目 代码 下载 效果 C#图片批量下载 项目 代码 using Aspose.Cells; using NLog; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.…...

部署Springboot + Vue 项目到远程服务器Windows10系统的详细配置

远程服务器操作系统为Windows系统&#xff0c;Java程序环境&#xff0c;Maven环境都安装有&#xff0c;Mysql ,Redis等都有的前提下 1. mysql数据库导入&#xff0c;非常简单很好操作&#xff0c;这里省略。。比如用HeidiSql 或者Navicat 工具导入数据库 2. 后端javaSpringb…...

智驭灌区,科技领航—— 高效灌区信息化系统管理平台

在水资源日益珍贵的今天&#xff0c;传统灌区的粗放式管理模式已难以满足现代农业的发展需求。我们自豪地推出——灌区信息化系统管理平台&#xff0c;以科技赋能水利&#xff0c;引领灌溉管理进入智能化、精细化新时代。 【智能决策&#xff0c;精准灌溉】 告别传统灌溉的盲目…...

下载免费设计素材,有这7个网站就够了

7个免费设计素材网站&#xff0c;这些网站提供了大量的免费资源&#xff0c;包括图片、字体、图标、模板等&#xff0c;涵盖了多种风格和主题&#xff0c;能够满足不同设计师和创作者的需求。无论是用于个人项目还是商业用途&#xff0c;这些网站都能给你提供丰富的选择&#x…...

【漏洞复现】某赛通数据泄露防护(DLP)系统 NetSecConfigAjax SQL注入漏洞

0x01 产品简介 某赛通新一代数据泄露防护系统&#xff08;简称 DLP&#xff09;&#xff0c;以服务企事业单位进行数据资产梳理、数据安全防护为目标。系统采用平台化管理&#xff0c;将终端DLP、网络DLP、邮件DLP、存储扫描DLP、API 接口DLP 进行统一管理&#xff0c;模块化控…...

c++中的仿函数

目录 什么是仿函数&#xff1f; 仿函数的定义与使用 仿函数与普通函数的比较 实际应用场景 总结 当谈论到 C 编程中的灵活性和效率时&#xff0c;仿函数&#xff08;Functor&#xff09;是一个重要的概念。它不仅可以提供比普通函数更多的功能&#xff0c;还能够在很多情况…...

springboot整合mybatis-plus和pagehelper插件报错,

在springboot和myabtisplus版本没有冲突的情况下&#xff0c;MybatisPlusAutoConfiguration配置类没有生效&#xff0c;查看该类发现存在生效条件&#xff0c;即&#xff1a; 1.必须存在数据源的Bean对象 2.必须存在SqlSessionFactory和SqlSessionFactoryBean类&#xff08;这…...

趋动科技荣登「AIGC赋能金融创新引领者TOP20」

2023年11月28日&#xff0c;“极新AIGC行业峰会”在北京召开&#xff0c;峰会以“AI落地”为指引&#xff0c;探究AI实践与产业化。 从制造业到金融服务业&#xff0c;从医疗保健到交通运输&#xff0c;从文化娱乐到消费零售&#xff0c;智能客服、数字人直播、智能巡检机器人&…...

SOPHGO算能科技BM1684盒子占用空间满的问题解决

目录 1 问题由来 2 问题排查与解决 1 问题由来 安装软件的时候发现&#xff0c;软件根本安装不上了&#xff0c;用df -h看到根目录已经满了 rootbm1684:~# df -h Filesystem Size Used Avail Use% Mounted on overlay 5.8G 5.7G 0 100% / devtmpfs …...

Spring Boot实用小技巧 - - 第523篇

《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《国内最全的Spring Boot系列之七》 Spring的Sma…...

安卓App开发 篇二:Android UI和布局

文章目录 系列文章Jetpack Compose基本语法可组合函数预览布局元素基于槽位(slot-based)的布局横屏处理实现布局设计布局检查器工具Material Design使用字符串等资源列表和动画LazyColumn 和 LazyRowremember 和 mutableStateOf事件mutableStateOfremember局部更新组件(官方…...

k8s基本介绍

Kubernetes, also known as K8s, is an open source system for automating deployment, scaling, and management of containerized applications. Kubernetes&#xff0c;也称为k8&#xff0c;是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。 使用go语言编写ht…...

go http启动应用程序

udpserver udpserver 是go程序需要启动的程序 #include <iostream> #include <unistd.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <thread>const int BUFFER_SIZE 1024;int udpSocket; struct …...

Redis:概念、部署、配置、优化

目录 关系型数据库与非关系型数据库 关系型数据库 非关系型数据库 非关系型数据库存在的原因 Redis 概念 优点 Redis部署流程 初步设置 安装 初始化 初始化时指定的参数说明 Redis配置文件 修改监听地址 Redis远程连接 远程连接 测试服务端状态 redis-benchm…...

华为OD-D卷找座位

在一个大型体育场内举办了一场大型活动&#xff0c;由于疫情防控的需要&#xff0c;要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位分布图&#xff0c;座位中存在已落座的观众&#xff0c;请计算出&#xff0c;在不移动现有观众座位的情况下&#xff0c;…...

Go sdk下载和配置环境变量

本文目录 SDK下载环境变量配置测试 SDK下载 下载地址&#xff1a;https://golang.google.cn/dl/ 更多版本&#xff0c;找到1.9.2 我是win10 64位的&#xff0c;我找到这个下载 下载之后解压&#xff0c;可以看到bin文件夹。 环境变量配置 我的电脑 -> 属性 -> 高级…...

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

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

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...