【Linux 28】应用层协议 - HTTPS

news2024/11/25 13:36:26

文章目录

  • 🌈 一、HTTPS 相关概念
    • ⭐ 1. 什么是 HTTPS
    • ⭐ 2. 加密 & 解密 & 密钥
    • ⭐ 3. 常见的加密方式
    • ⭐ 4. 数据摘要 & 数据指纹
    • ⭐ 5. 初识数字签名
  • 🌈 二、HTTPS 的加密方案探究
    • ⭐ 1. 方案一:只使用对称加密
    • ⭐ 2. 方案二:只使用非对称加密
    • ⭐ 3. 方案三:双方都使用非对称加密
    • ⭐ 4. 方案四:非对称加密 + 对称加密
  • 🌈 三、中间人攻击
  • 🌈 四、引入证书解决中间人攻击
    • ⭐ 1. CA 证书
    • ⭐ 2. 理解数字签名
    • ⭐ 3. 方案五:非对称加密 + 对称加密 + 证书认证
  • 🌈 五、HTTPS 的工作流程
  • 🌈 六、HTTPS 总结

🌈 一、HTTPS 相关概念

⭐ 1. 什么是 HTTPS

  • HTTPS 也是一个应用层协议,它在 HTTP 协议的基础上引入了一个加密层。
    HTTP 协议的内容由于都是按照文本的方式明文传输的,HTTP 无论是用 GET 还是 POST 进行传参,都没有任何加密,这就导致在传输过程中出现一些被篡改的情况。
  • 为了解决 HTTP 在安全方面的问题,HTTPS 协议就这样诞生了。HTTPS 在应用层和传输层之间加了一层加密层 (加密层本身还是属于应用层),加密层会对用户的个人信息进行加密 / 解密。
  • HTTPS 在交付数据时,会先把数据交给加密层,由加密层对数据加密之后再交给传输层。
  • 总结起来也就一句话:HTTPS 是经过了加密解密的 HTTP

image-20241102195638719

⭐ 2. 加密 & 解密 & 密钥

  • 加密:将明文 (要传输的数据) 通过某种转换规则转换成密文的过程。
  • 解密:将密文通过某种转换规则还原成明文的过程。
  • 密钥:在加密和解密的过程中,需要 1 ~ n 个中间数据来辅助这个过程,这样的数据就被称之为密钥。

解释 加密 & 解密 & 密钥 的关系

  • 使用凯撒密码为例,说明这三者之间的关系。

image-20241102202930518

image-20241102202951896

image-20241102203029235

  • 在这个例子中,“HELLO WORLD” 是明文,“KHOOR ZRUOG” 是密文,而密钥是 3。密钥在加密和解密过程中起着至关重要的作用,只有知道密钥的人才能将密文解密回原文。这也体现了加密技术的基本思想:通过密钥保护信息的机密性

⭐ 3. 常见的加密方式

  • 常见的加密方式分为对称加密非对称加密

1. 对称加密

  • 采用单密钥系统的加密方式被称为对称加密,该加密方式的特征就是加密和解密所用的密钥相同

    • 例:上文的凯撒密码就是对称加密,加密和解密用的都是 3 这个密钥。
  • 常见的对称加密算法:DES、3DES、AES、TDEA、Blowfish、RC2 等。

  • 对称加密的特点:算法公开、计算量小、加密解密速度、效率高。

2. 非对称加密

  • 采用双密钥系统的加密方式被称为非对称加密,这两个密钥分别是公开密钥 (public key)私有密钥 (private key)

    • 公开密钥顾名思义就是可以在网络上公开的密钥,而私有密钥则只有自己知道。
  • 常见的非对称加密算法:RSA、DSA、ECDSA。

  • 非对称加密的特点:算法强度复杂,加密 / 解密速度,安全性依赖于算法和密钥。

  • 这两种密钥都可以用作加密和解密,且公钥和私钥是配对的,用一种密钥加密,则必须用另一种解密。

    1. 如果使用 公钥加密,私钥解密,则只有持有私钥的人才能解密。能加密的人多,能解密的人少。
    2. 如果使用 私钥加密,公钥解密,则持有公钥的人都能进行解密。能加密的人少,能解密的人多。
  • 上述两种方法没有谁好谁坏之分,根据实际场景判断加密的人多,还是解密的人多进行选择即可。

image-20241103105542098

⭐ 4. 数据摘要 & 数据指纹

  • 数据摘要 (也叫数据指纹),其通过单向散列函数对数据进行运算,生成一串固定长度的数字摘要。

    • 不管是一个字还是一万个字生成的数据摘要长度都一样,数据摘要的固定长度取决于所使用的算法。
  • 由于生成数据摘要采用的是哈希的方式,因此生成数据摘要的过程不可逆 (可以用 key 知道 value,但不能通过 value 获取到 key)。

    • 由于数据摘要不能解密,因此它不是加密机制,主要用来判断数据是否被篡改
  • 常见数据摘要算法:MD5、SHA1、SHA256 等。

  • 这些算法会将无限的映射成有限的,因此可能会发生哈希碰撞。

  • 数据摘要的特征:因为摘要并不是加密机制,因此也没有解密的说法。

  • 由于很难对数据摘要进行反推得出原信息,通常被用来进行数据对比。

1. 举个例子

image-20241103111246136

2. 数据摘要的应用场景

  • 在使用网盘客户端上传文件时,如果网盘服务端检测到你要上传的文件已经有了,就会触发秒传机制。
  • 服务端通过数据摘要的方式来判断要上传的文件是否已经存在。由于数据摘要是唯一的,因此可以用它来当作索引的键值。
  • 在要上传时,客户端会对要上传的文件生成一份数据摘要,然后将数据摘要发送给服务端,和服务端中已有的数据摘要进行对比。
  • 如果找到了这个数据摘要,则说明要上传的文件已经在服务端有一份了,直接触发秒传,如果没找到就老老实实的上传。

⭐ 5. 初识数字签名

  • 对数据摘要进行加密之后,就能得到数字签名。

举个例子

image-20241103152008222

image-20241103152029918

🌈 二、HTTPS 的加密方案探究

⭐ 1. 方案一:只使用对称加密

  • 首先声明,该方案不具备任何可行性

为何只使用对称加密的方案不具备可行性

  • 当通信双方各自持有同一个密钥 X,且没别人知道时。可以保证这两方的通信安全(除非密钥被破解)。
  • 引入对称加密后,即使数据被截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真实内容了。

image-20241103183423348

  • 这种方法虽然能防止明文请求被截取,但它也有自己的问题存在。
  • 服务器同一时刻不可能只给一台客户端提供服务,在给多客户端提供服务时,每台客户端所使用的密钥都必须不同 (如果相同就容易扩散,黑客获取密钥成本大大降低)。因此服务器还需要维护每个客户端和每个密钥之间的关系,成本挠一下的就上来了。

image-20241103160521931

  • 如果想解决这个问题,可以在客户端和服务器建立连接的时候,双方协商确定这次的密钥。
  • 但同时新的问题又诞生了,如果直接把密钥明文传输,黑客也就能获得密钥了。

image-20241103160915032

  • 因此,密钥的传输也要进行加密传输,但是要想对密钥进行对称加密,仍然需要先协商确定一个 “密钥的密钥”。
  • 因此,如果只使用对称密钥进行加密,就会陷入上述问题的死循环中。

⭐ 2. 方案二:只使用非对称加密

  • 首先声明,该方案存在安全性问题,不具备可行性

为何只使用非对称加密的方案不具备可行性

  • 由于非对称加密的机制,如果服务器先将公钥以明文的方式传输给客户端。
  • 之后客户端再向服务器发送数据前,都先用这个公钥对数据进行加密后再进行密文传输。从客户端到服务器的通信信道似乎是安全的。
  • 无法保证服务器到客户端的通信信道的安全。如果服务器使用它的私钥对数据加密后传给客户端,那么浏览器就可以用服务器提供的公钥对该密文进行解密。由于服务器的公钥是公开的,如果这个公钥被中间人劫持了,就能用来解密从服务器传来的信息。

⭐ 3. 方案三:双方都使用非对称加密

  • 首先声明,该方案存在安全性、效率低的问题,不具备可行性

1. 该方案加密解密的方式

  1. 客户端和服务端得形成各自的公钥和私钥。服务端持有公钥 S 与对应的私钥 s,客户端持有公钥 C 与对应的私钥 c
  2. 客户端与服务端互换公钥
  3. 客户端给服务端发数据:客户端先用服务端的公钥 S 对数据加密后发送,该密文只有持有私钥 s 的服务端能解。
  4. 服务端给客户端发数据:服务端先用客户端的公钥 C 对数据加密后发送,该密文只有持有私钥 c 的客户端能解。

为何双方都使用非对称加密的方案不具备可行性

  • 效率低:已经知道了非对称加密的特点之一就是效率低,这个方案用了两个非对称加密,双倍的慢。

⭐ 4. 方案四:非对称加密 + 对称加密

  • 该方案的密钥协商过程采用非对称加密,在通信的过程采用对称加密。
  • 该方案几乎接近正确答案,但由于还是无法解决安全问题,因此还是不可行

1. 密钥协商过程采用非对称加密,能有效解决效率问题

image-20241103165733097

  1. 服务端生成自己的非对称密钥,其中 公钥 S 和 私钥 s
  2. 客户端发起 HTTPS 请求,获取服务端的公钥 S
  3. 客户端在本地生成对称密钥 C,通过服务端的公钥 S 对密钥 C 进行加密,然后将被加密的密钥 C 发送给服务器。
  4. 由于中间的网络设备没有服务端的私钥 s,即使截获了数据,也无法还原出内部的原文,即无法获取到对称密钥 C
  5. 服务器通过持有的私钥 s 解密,还原出客户端发送的对称密钥 C,并且使用这个对称密钥加密给客户端返回的响应数据。
  6. 后续客户端和服务器的通信都只用对称加密即可。
    • 由于密钥 C 只有客户端和服务器两个主机知道,其他主机 / 设备不知道密钥即使截获数据也没有意义。

2. 无法解决安全问题 (详情见中间人攻击)

🌈 三、中间人攻击

  • 数据在网络中并不是直接到达目的地,中间可能会经过多个中间设备 (如路由器) 进行中转,中间人就是劫持了中间设备的非法用户。
  • 方案一 到 方案四 都不能解决安全问题,其中看着最行的 方案四 也会因为中间人攻击而导致出现安全问题。
    • 注:方案一 到 方案四 都会因为下面的中间人攻击而产生安全问题。

客户端无法确定收到的含有公钥的数据报文,就是目标服务器发送过来的

  • 如果最开始服务端在传输公钥 S 的时候,中间人就将公钥换成了自己的公钥,安全问题这不就出来了,过程如下:
  1. 服务端持有非对称密钥中的公钥 S,私钥 s。

  2. 中间人持有非对称密钥中的公钥 M,私钥 m

  3. 客户端向服务器发起请求报文,服务器通过响应报文将公钥 S 明文传送给客户端。

  4. 中间人劫持响应报文,提取公钥 S 并保存好,然后将被劫持报文中的公钥 S 替换成中间人的公钥 M,并将伪造报文发给客户端

  5. 客户端收到伪造的报文,提取公钥 M,在本地形成对称秘钥 C,用公钥 M 加密 C,形成请求报文发送给服务器。

  6. 中间人劫持请求报文,用自己的私钥 m 进行解密,得到通信秘钥 C,再用曾经保存的服务端公钥 S 加密后,将报文推送给服务器

  7. 服务器拿到报文,用自己的私钥 s 解密,得到通信秘钥 C。

  8. 双方开始采用密钥 C 进行对称加密,开始通信,完全不知道密钥 C 已经暴露给中间人了。

image-20241103184923061

  • 看起来没问题的方案四就这样被破解了,服务端和客户端之间的通信已经相当于在中间人面前裸奔了。
  • 都走到这了,这 4 个方案都不可行,那么就只有方案五既能解决效率问题,又能解决安全问题了。

🌈 四、引入证书解决中间人攻击

  • 想要解决中间人攻击的问题,就需要引入证书这个东西。
  • 中间人攻击的问题处在客户端与服务端建立通信的最开始 (中间人劫持了服务端的公钥),只要将这个漏洞补上即可解决中间人攻击的问题。
  • 中间人攻击的核心问题在于客户端无法确定收到的含有公钥的数据报文,就是目标服务器发送过来的,只要把这个问题解决就行了。

image-20241103200249697

⭐ 1. CA 证书

  • 服务端在使用 HTTPS 前,需要向 CA 机构申请一份数字证书,数字证书里面包含证书申请者信息、公钥信息等。
  • 服务端将这个数字证书发给客户端,客户端通过数字签名判断收到的这个数字证书是否是从目标服务器发来的。
  • 如果客户端判断出数字证书是从目标服务器发来的,接下来客户端只需要从证书中获取公钥即可
  • 不管中间人怎么蹦跶,只要识别出接收到的数字证书的数字签名不对劲,客户端都不予理睬。

申请 CA 证书的基本流程

image-20241103191036656

  • 当申请完 CA 证书后,会将这个 CA 证书内置到自己的 HTTP 服务器中。
  • 之后在与客户端正式进行通信前,先把证书发出去,证明自己的身份。

⭐ 2. 理解数字签名

  • 数字签名在 HTTPS 中,用于辅助客户端判断接收到的数字证书是否是目标服务器发来的。
    • 注:签名的形成基于非对称加密算法,暂时和 HTTPS 没关系,不要和 HTTPS 中的公钥私钥搞混了。

数字证书的形成过程

  • 当服务端申请 CA 证书时,CA 机构会审核该服务端,并专门为该网站形成数字签名,过程如下:

    1. CA 机构拥有非对称加密的公钥 A 和私钥 a

    2. CA 机构对服务端申请的证书明文数据进行 hash,形成数据摘要

    3. CA 机构对数据摘要使用私钥 a 进行加密,得到数字签名 S

  • 服务端申请的证书明文和数字签名 S 共同组成了数字证书,这样一份数字证书就可以正式颁发给服务端了。

  • 由于只能使用签名者 (HTTP 的签名者是 CA 机构) 的公钥对数字签名进行解密,只要发现收到的公钥和内置的签名者的公钥不一致,就不会进行之后的验证。

    • 服务端和客户端都内置了 CA 机构这个签名者的公钥。

image-20241103202651921

⭐ 3. 方案五:非对称加密 + 对称加密 + 证书认证

  • 方案五就是在方案四的基础上添加一个证书认证环节。
  • 客户端和服务端一建立连接,服务端就立马给客户端返回一个数字证书,来证明自己的合法性。
    • 证书中内置了服务端的公钥、网站的身份信息等。

image-20241103204557485

  • 之后客户端在进行认证时,就会使用内置在客户端的签名者的公钥对数字签名进行解密,验证获取到的这个证书。

1. 客户端要验证证书的哪些内容

  1. 验证证书的有效期是否过期
  2. 验证证书的发布机构是否可信 (客户端中都已经内置了所有可信的证书发布机构的公钥)。
  3. 验证证书的内容是否被篡改:从系统中拿到该证书发布机构的公钥,对签名解密,得到一 个 hash 值 (数据摘要),设为 hash1。然后计算整个证书的 hash 值, 设为 hash2。对比 hash1 和 hash2 是否相等。 如果相等,则说明证书是没有被篡改过的。

2. 查看浏览器中内置的可信的证书发布机构

  • 以 edge 浏览器为例,在设置中搜索管理证书,然后点击第一个管理证书即可。

image-20241103205345464

🌈 五、HTTPS 的工作流程

  1. 客户端发起连接请求:客户端 (通常是浏览器) 向服务器发送一个安全连接请求。
  2. 服务器向客户端发送证书:服务器收到客户端的连接请求后,将内置在 HTTPS 服务器内的数字证书作为响应报文返回给客户端。
  3. 客户端验证收到的证书:浏览器在接收到服务端发送过来的数字证书后,会验证该证书的合法性 (判断这个证书是否是 CA 机构颁发的)。
  4. 密钥协商:当服务端的数字证书通过客户端的验证过后,客户端会在本地生成一个对称密钥,用于后续的数据加密和解密。客户端会使用从数字证书中提取出来的服务端的公钥对这个对称密钥进行加密,然后发送给服务端。
  5. 通信加密:服务端接收到使用服务端的公钥加密的对称密钥,服务端使用自己的私钥进行解密,获取客户端生成的对称密钥。至此,客户端与服务端之间就建立起了一个加密的安全通道,客户端和服务端之间的数据传输都会在这个安全通道中进行。
  6. 安全数据传输:建立好安全通道后,客户端和服务端之间就可以安全的进行数据传输了。在发送数据前,发送端会使用持有的对称密钥对数据进行加密,然后接收端就会使用相同的对称密钥对数据进行解密。
  7. 完整性检查:为了防止数据在传输过程中被篡改,HTTPS 还需要使用数据摘要对数据进行完整性检查。接收方会对接收到的数据进行校验,并判断校验结果是否与发送方所计算的结果相同。

完整的工作流程示意图

  • 左侧都是客户端做的事,右侧都是服务器做的事。

image-20241103210011717

🌈 六、HTTPS 总结

  • 在 HTTPS 的工作过程中涉及到的密钥有三组。

1. 第一组:非对称加密

  • 用于校验证书是否被篡改
  • 服务端持有私钥 (私钥在形成 CSR 文件与申请证书时获得),客户端持有公钥 (客户端中内置了所有可信的 CA 认证机构,同时持有对应的公钥)。 服务端在客户端请求时,返回携带签名的证书。客户端通过这个公钥进行证书验证,保证证书的合法性,进一步保证证书中携带的服务端公钥权威性。

2. 第⼆组:非对称加密

  • 用于协商生成对称加密的密钥
  • 客户端用收到的 CA 证书中的公钥 (是可被信任的) 给随机生成的对称加密的密钥加密,然后传输给服务端,服务端通过私钥解密获取到对称加密密钥。

3. 第三组:对称加密

  • 用于对客户端和服务器后续传输的数据进行加密解密
  • HTTPS 一切工作的关键就是这个对称加密的密钥。 其他的机制都是辅助这个密钥工作的。第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器。第一组非对称加密的密钥是为了让客户端拿到第⼆组非对称加密的公钥。

书中携带的服务端公钥权威性。

2. 第⼆组:非对称加密

  • 用于协商生成对称加密的密钥
  • 客户端用收到的 CA 证书中的公钥 (是可被信任的) 给随机生成的对称加密的密钥加密,然后传输给服务端,服务端通过私钥解密获取到对称加密密钥。

3. 第三组:对称加密

  • 用于对客户端和服务器后续传输的数据进行加密解密
  • HTTPS 一切工作的关键就是这个对称加密的密钥。 其他的机制都是辅助这个密钥工作的。第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器。第一组非对称加密的密钥是为了让客户端拿到第⼆组非对称加密的公钥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2234128.html

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

相关文章

qt QFileDialog详解

1、概述 QFileDialog是Qt框架中的一个对话框类,用于提供一个标准的文件选择对话框。它允许用户浏览文件系统,选择一个或多个文件或目录,以及指定文件名。QFileDialog支持本地文件系统和远程文件系统(如通过FTP或SFTP访问的文件系…

C语言不同基本数据类型占用字节大小和取值范围

具体请前往:C语言各种基本数据类型字节大小和取值范围

Vue3:新特性详解

本文目录: 1.特性函数setup2.Ref 语法3.Reactive 函数4.Vue3 生命周期5.侦测变化 - watch6.Vue3的模块化开发7.弹窗类组件优化:Teleport8.异步组件优化:Suspense9.全局API优化 1.特性函数setup 1、setup函数是处于 生命周期函数 beforeCreate…

Linux scp命令 | 菜鸟教程-从本地复制到远程/从远程复制到本地

目录 Linux scp命令 语法 实例 1、从本地复制到远程 2、从远程复制到本地 说明 文章来源:Linux scp命令 | 菜鸟教程 Linux scp命令 nux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远…

计算机毕业设计Python+大模型膳食推荐系统 知识图谱 面向慢性病群体的膳食推荐系统 健康食谱推荐系统 机器学习 深度学习 Python爬虫 大数据毕业设计

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

大数据集群中实用的三个脚本文件解析与应用

目录 一、jps - cluster.sh 脚本文件 (一)背景与功能 (二)使用方法 二、集群文件分发脚本 xsync.sh (一)背景与问题 (二)功能与实现原理 (三)脚本编写…

【数据分享】1981-2024年我国逐日平均气温栅格数据(免费获取)

气象数据一直是一个价值很高的数据,它被广泛用于各个领域的研究当中。这其中,又以平均气温数据最为常用!之前我们分享过来源于美国国家海洋和大气管理局(NOAA)下设的国家环境信息中心(NCEI)发布的1929-2024年全球站点的…

多模态PaliGemma——Google推出的基于SigLIP和Gemma的视觉语言模型

前言 本文怎么来的呢?其实很简单,源于上一篇文章《π0——用于通用机器人控制的流匹配VLA模型:一套框架控制7种机械臂(改造了PaliGemma和ACT的3B模型)》中的π0用到了PaliGemma 故本文便来解读下这个PaliGemma 第一部分 PaliGemma 1.1 Pal…

开源模型应用落地-glm模型小试-glm-4-9b-chat-Gradio集成(三)

一、前言 GLM-4是智谱AI团队于2024年1月16日发布的基座大模型,旨在自动理解和规划用户的复杂指令,并能调用网页浏览器。其功能包括数据分析、图表创建、PPT生成等,支持128K的上下文窗口,使其在长文本处理和精度召回方面表现优异&a…

ABAP开发学习——OLE

目录 1.概览 2.OEL的实现方式 3.OLE的配置 4.OLE的实现 4.1 OLE Demo 4.2 OLE实现的步骤 5.OLE实现样例 5.1 OLE中的的类型转换 5.2 变量定义 5.3 创建对象 5.4 表单页的操作 5.5 设置文件保存路径 5.6 文件是否可见 5.7 单元格操作 5.7.1 给单元格赋值 5.7.2…

在Java中,实现数据库连接通常使用JDBC

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

单臂路由实现不同VLAN之间设备通信

转载请注明出处 本实验为单臂路由配置,目的为让不同VLAN之间的设备能够互相通信。 1.首先,按照要求配置两个pc的ip地址,以pc0为例子: 2在交换机创建vlan10和vlan20 3.划分vlan,pc0为vlan10的设备,pc1为vla…

前后端交互通用排序策略

目录 排序场景 排序实现思路 1. 静态代码排序实现 2.数据库驱动排序实现 3. 基于Java反射的动态排序实现 通用排序工具 SortListUtil 结语 排序场景 在面向前端数据展示的应用场景中,我们旨在实现一个更加灵活的排序机制,该机制能够支持对从后端传递…

【华为云-云驻共创】UCS跨云多活容灾:让业务高可用不再是难题

【摘要】云原生应用深入到企业各个业务场景,云原生正在走向分布式化,跨云跨域统一协同治理,保证一致应用体验,这些新的需求日益凸显。而容灾是确保服务高可用的保障,但即使应用部署在云上,也无法避免市政方…

Linux内核编程(十九)SPI子系统的应用与驱动编写

本文目录 一、 SPI驱动框架图二、编写SPI驱动device框架三、编写SPI驱动driver框架四、实验一编写mcp2515驱动1. 注册字符设备或杂项设备框架2. SPI写数据3. SPI读寄存器数据 4. MCP2515相关配置 对于SPI基础知识这里不做过多讲解,详情查看:SPI基础知识实…

谍影重重5.0

打开流量包可以发现,流量中含有大量的smb加密通信,并且使用了ntlm v2加密协议进行身份认证 包过滤ntlmssp 认证后smb协议进行了大量的数据传输 取出tom的包内数据 得到以下数据 username:tomdomain: .NTProofStr: ca32f9b5b48c04ccfa96f35213d63d75NT…

qt QAbstractItemModel详解

1. 概述 QAbstractItemModel是Qt框架中的一个核心抽象基类,在Qt的模型/视图架构中扮演着至关重要的角色。这个类提供了一个接口,用于表示和管理数据,但不直接处理数据的存储。它的主要功能是为视图组件(如QListView、QTableView和…

华为OD机试 - 无重复字符的元素长度乘积的最大值(Python/JS/C/C++ 2024 C卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

【C++之STL】一文学会使用 string

文章目录 1. STL导读1. 1 什么是STL1. 2 STL的版本1. 3 STL六大组件1. 4 STL的重要性1. 5 STL的学习1. 6 STL系列博客的规划 2. string2. 1 为什么学习string类?2. 2 标准库中的string2. 3 基本构造2. 4 尾插与输出运算符重载2. 5 构造函数2. 6 赋值运算符重载2. 7 容量操作2.…

【分布式】分布式锁设计与Redisson源码解析

分布式锁 分布式锁是一种在分布式计算环境中用于控制多个节点(或多个进程)对共享资源的访问的机制。在分布式系统中,多个节点可能需要协调对共享资源的访问,以防止数据的不一致性或冲突。分布式锁允许多个节点在竞争访问共享资源…