首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >聊聊加密那些事

聊聊加密那些事

作者头像
勇哥java实战
发布2026-04-28 09:53:22
发布2026-04-28 09:53:22
810
举报
文章被收录于专栏:勇哥编程游记勇哥编程游记

四月份很忙碌,项目中,我还是重温到了很多的技术知识点,加密是非常重要的一环。

这篇文章,我们聊聊加密,希望对大家有帮助。

1 基础知识

加密是一种通过数学算法将明文信息转换为密文的过程,目的是确保只有拥有正确解密密钥的授权方能够访问原始数据。

加密过程通过使用复杂的算法和密钥,将数据“加扰”,使其无法被未经授权的人员理解或访问。

最常见的两种加密算法是对称加密非对称加密

2 对称加密

对称加密(也称为共享密钥或私钥算法)使用相同的密钥来进行加密和解密。对称密钥加密的生成成本较低,加密和解密不需要太多的计算能力,这意味着解码数据的延迟时间较短。

但缺点是,如果未经授权的人员拿到密钥,就能够解密双方之间的消息和数据。因此,需要使用不同的加密密钥对共享密钥的传输进行加密,从而导致依赖循环。

勇哥最常接触的对称加密算法是 AES(高级加密标准),并且在艺龙和神州的接口中,常用于对请求体进行加密。

高级加密标准(AES) 是对称加密算法的典型代表。

示例代码:

执行结果:

3 非对称加密

非对称加密(也称为公钥加密)使用两个单独的密钥来加密和解密数据。其中一个是各方共享的用于加密的公钥。这样,拥有公钥的任何人都可以发送加密消息,但只有拥有第二个密钥(即私钥)的人才能解密消息。

非对称加密的生成成本较高,且需要更多的计算能力来解密,因为加密公钥通常很大,在 1,024 到 2,048 位之间。因此,非对称加密通常不适用于大数据包

SM2算法,由国家密码管理局于2010年12月发布,是我国自主设计的公钥密码算法。SM2基于更加安全先进的椭圆曲线密码机制,在国际标准的ECC椭圆曲线密码理论基础上进行改进而来,其加密强度更高。

下面是一个 SM2 非对称加密的例子:

22
22

22

执行结果:

4 HTTPS 到底是啥

简单来说,HTTPS 并不等于某种加密算法,它是一个“组合拳”方案。

如果把加密算法比作零件(如螺丝、齿轮),那么 HTTPS 就是一台组装好的精密机器(如汽车)。

HTTPS 的工作流程:

第 1 步 - 客户端(浏览器)与服务器建立 TCP 连接

第 2 步 - 客户端向服务器发送 “Client Hello” 消息。该消息包含一组必要的加密算法(密码套件)以及它能支持的最新 TLS 版本。服务器返回 “Server Hello” 进行响应,以便浏览器确认其是否支持这些算法和 TLS 版本。 随后,服务器将 SSL 证书发送给客户端。证书中包含公钥、主机名、有效期等信息。客户端会对该证书进行验证。

第 3 步 - 验证 SSL 证书后,客户端生成一个会话密钥(Session Key),并使用服务器的公钥对其进行加密。服务器接收到加密后的会话密钥,并使用自己的私钥进行解密。

第 4 步 - 现在,客户端和服务器都持有相同的会话密钥(即对称加密),加密后的数据便可以在这个安全的双向通道中进行传输。

5 哈希算法是加密吗

勇哥曾经多次研究阿里云、腾讯云的网关系统的API 鉴权机制。

其核心往往依托于 HMAC-SHA256 算法——这本质上是一个基于“请求标准化(Canonicalization)”的指纹生成过程。

通过将请求方法、报文头及参数按特定规则提取并“标准化”处理,算法能为每一条请求生成独一无二的哈希指纹。

这里需要厘清一个底层概念:

SHA-256 属于单向哈希算法,而非双向加密算法。

两者的本质区别在于可逆性

  • 加密算法(如 AES、RSA): 旨在隐藏信息。它是双向的,核心在于“还原”,即加密后的密文必须能通过密钥解密回原始数据。
  • 哈希算法(如 SHA-256): 旨在提取特征。它是单向的,核心在于“不可逆性”,即无论输入数据多大,都会映射为固定长度的特征值(指纹),在计算层面几乎无法反推原始输入。

6 国密双向认证

整体流程:

第一阶段:身份呈递与初步核验

  • 1. 客户端发起请求: 客户端连接器 A 将自己的 SM2 证书 发送给基础平台 B。为了保证传输安全,该证书通常使用 B 的 SM2 公钥 进行加密。
  • 2. 服务端核验身份: 平台 B 使用自己的 SM2 私钥 解密获取证书,并核验 A 证书的合法性(如检查 CA 签发关系、有效期及吊销状态)。

第二阶段:服务端反向认证

  • 3. 服务端挑战响应: 平台 B 生成一个随机数(nonce),使用自己的 SM2 私钥 对其进行签名并发送给 A。这一步是为了向 A 证明“我确实是 B”。
  • 4. 客户端验证服务端: 客户端 A 使用 B 的 SM2 公钥 解密并验证签名。若验证通过,则 A 确认对方是真实合法的 B 平台。

第三阶段:客户端所有权证明

  • 5. 客户端签名回复: A 使用自己的 SM2 私钥 对特定数据进行签名并发回给 B。
  • 6. 服务端最终确认: 平台 B 使用 A 的 SM2 公钥 验证签名。一旦成功,证明 A 确实持有对应的私钥,至此双方互信建立完成

第四阶段:会话令牌分发

  • 7. 安全发放 Token: 确认身份后,B 颁发访问 Token。为了保证性能和安全,系统从非对称加密切换为对称加密。B 使用 SM4 算法(国密对称加密标准)加密 Token 并返回给 A。
  • 8. 建立加密会话: 客户端 A 使用预共享或协商好的密钥通过 SM4 解密,获得最终的 Token。此后,双方的所有业务通信都将基于此 Token 和 SM4 加密进行。

往期推荐 :

第一次用 Ollama 跑视觉模型:Qwen2.5-VL 7B 给了我一个意外惊喜

程序员的明天:AI 时代下的行业观察与个人思考

10GB vs 600MB:我们弃用 GitLab,选择了这个轻量级神器

如果我的文章对你有所帮助,还请帮忙点赞、在看、转发一下,你的支持会激励我输出更高质量的文章,非常感谢!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 勇哥java实战分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 基础知识
  • 2 对称加密
  • 3 非对称加密
  • 4 HTTPS 到底是啥
  • 5 哈希算法是加密吗
  • 6 国密双向认证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档