对称加密 vs 非对称加密图解详解

对称加密 vs 非对称加密图解详解

一、对称加密图解

1. 对称加密基本模型

复制代码
┌─────────────────────────────────────────────────────┐
│                   对称加密流程                          │
├─────────────┐      加密       ┌─────────────┐       │
│             │                │             │       │
│   明文数据   │───────────────▶│   密文数据   │───────┼──▶
│             │                │             │       │ 传输/存储
├─────────────┤                ├─────────────┤       │
│  同一把密钥   │                │  同一把密钥   │       │
│  (保密)     │◀───────────────│  (保密)     │       │
└─────────────┘                └─────────────┘       │
       ▲                              ▲              │
       │                              │              │
       └────────────┬─────────────────┘              │
                    │                                ▼
                ┌───┴───┐                    ┌─────────────┐
                │密钥管理│                    │ 不安全通道   │
                │ 难题  │                    │(可能被窃听)  │
                └───────┘                    └─────────────┘

2. 对称加密详细工作流程

  1. 原始明文 2. 输入密钥 3. 生成密文 4. 传输 5. 接收密文 6. 同一把密钥 7. 恢复明文 尝试窃听
    发送方
    加密算法
    共享密钥
    密文数据
    网络/存储
    解密算法
    接收方
    攻击者
    密钥交换问题

3. 常见对称加密算法

复制代码
┌─────────────────────────────────────────────────────┐
│                 常见对称加密算法对比                    │
├─────────────┬──────────┬─────────┬─────────────────┤
│   算法名称   │ 密钥长度   │ 工作模式  │     特点        │
├─────────────┼──────────┼─────────┼─────────────────┤
│    AES      │128/192/256│ ECB/CBC │ 最常用,速度快    │
│             │   bits    │ GCM等    │                 │
├─────────────┼──────────┼─────────┼─────────────────┤
│    DES      │   56 bits │  ECB    │ 已不安全        │
├─────────────┼──────────┼─────────┼─────────────────┤
│    3DES     │  168 bits │  CBC    │ 三重DES,较慢    │
├─────────────┼──────────┼─────────┼─────────────────┤
│   Blowfish  │32-448 bits│  ECB    │ 可变密钥长度     │
├─────────────┼──────────┼─────────┼─────────────────┤
│   ChaCha20  │  256 bits │         │ 移动设备常用     │
└─────────────┴──────────┴─────────┴─────────────────┘

4. 对称加密在JASPt中的应用

复制代码
┌─────────────────────────────────────────────────────┐
│          JASPt中的对称加密配置加解密流程                │
├──────────────────┐    ┌───────────────────────────┤
│   开发人员操作     │    │     应用运行时              │
├──────────────────┼────┼───────────────────────────┤
│  1. 准备明文配置   │    │  5. 从Nacos读取带+enc配置  │
│     ↓            │    │          ↓                │
│  2. 调用JASPt API│    │  6. 识别+enc标记          │
│     ↓            │    │          ↓                │
│  3. JASPt使用对称 │    │  7. 调用JASPt解密API      │
│     密钥加密      │    │          ↓                │
│     ↓            │    │  8. JASPt使用相同密钥      │
│  4. 得到ENC(密文) │    │     解密返回明文          │
│     ↓            │    │          ↓                │
│  存入Nacos配置中心│    │  9. 应用使用明文配置        │
└──────────────────┴────┴───────────────────────────┘

密钥存储位置:JASPt密钥管理服务(与配置分离)

二、非对称加密图解

1. 非对称加密基本模型

复制代码
┌─────────────────────────────────────────────────────┐
│                   非对称加密流程                        │
├─────────────┐                ┌─────────────┐       │
│  发送方      │                │  接收方      │       │
├─────────────┤                ├─────────────┤       │
│             │                │             │       │
│   明文数据   │                │   密文数据   │       │
│             │                │             │       │
├─────────────┤                ├─────────────┤       │
│ 接收方的公钥  │                │  自己的私钥   │       │
│  (公开)     │                │  (严格保密)  │       │
└─────────────┘                └─────────────┘       │
       │                              │              │
       │         加密过程              │              │
       └─────────────┬────────────────┘              │
                     │                               ▼
                ┌────┴─────┐                  ┌─────────────┐
                │  使用公钥  │                  │ 不安全通道   │
                │  加密数据  │                  │             │
                └──────────┘                  └─────────────┘

2. 非对称加密详细工作流程

接收方解密
发送方加密
接收方密钥对生成
使用公钥
使用私钥
公钥公开分发
通过不安全通道传输
生成密钥对
公钥 Public Key
私钥 Private Key
明文数据
加密算法
密文数据
解密算法
恢复明文

3. 公钥与私钥的关系

复制代码
                    ┌─────────────────────┐
                    │   非对称密钥数学关系   │
                    ├─────────────────────┤
                    │  加密:C = E(PK, M)  │
                    │  解密:M = D(SK, C)  │
                    │                     │
                    │  PK:公钥 Public Key │
                    │  SK:私钥 Secret Key │
                    │  M:明文 Message    │
                    │  C:密文 Ciphertext │
                    └─────────────────────┘
                    
重要特性:
1. 公钥加密 → 只能用对应私钥解密
2. 私钥加密 → 只能用对应公钥解密(数字签名)
3. 从公钥无法推导出私钥

4. 混合加密系统(实际应用)

接收方处理
传输
第二阶段:对称加密传输数据
第一阶段:非对称加密交换对称密钥
发送方
生成随机会话密钥
用接收方公钥加密会话密钥
加密后的会话密钥
实际数据
用会话密钥加密数据
加密后的数据
传输通道
用私钥解密会话密钥
获得会话密钥
用会话密钥解密数据
获得原始数据

三、对称加密 vs 非对称加密对比图解

1. 特性对比

复制代码
┌─────────────────┬────────────────────────────────┬────────────────────────────┐
│   对比维度       │        对称加密                  │        非对称加密           │
├─────────────────┼────────────────────────────────┼────────────────────────────┤
│  密钥数量       │  单一把密钥                     │  一对密钥(公钥+私钥)       │
├─────────────────┼────────────────────────────────┼────────────────────────────┤
│  密钥分发       │  ⚠️ 困难,需要安全通道          │  ✅ 容易,公钥可公开         │
├─────────────────┼────────────────────────────────┼────────────────────────────┤
│  加密速度       │  ✅ 非常快                     │  ⚠️ 较慢(约慢1000倍)      │
├─────────────────┼────────────────────────────────┼────────────────────────────┤
│  适用场景       │  大量数据加密                   │  密钥交换、数字签名         │
├─────────────────┼────────────────────────────────┼────────────────────────────┤
│  资源消耗       │  ✅ 低                         │  ⚠️ 高                     │
├─────────────────┼────────────────────────────────┼────────────────────────────┤
│  算法示例       │  AES, DES, ChaCha20           │  RSA, ECC, DSA             │
├─────────────────┼────────────────────────────────┼────────────────────────────┤
│  密钥管理       │  N个用户需要N*(N-1)/2个密钥     │  N个用户只需N对密钥         │
└─────────────────┴────────────────────────────────┴────────────────────────────┘

2. 密钥管理复杂度对比

复制代码
对称加密(n个用户)             非对称加密(n个用户)
                                                 
    n=2: 1个密钥                   n=2: 2对密钥(4个密钥)
    ┌─────┐    ┌─────┐            ┌─────┐    ┌─────┐
    │  A  │────│  B  │            │  A  │    │  B  │
    └─────┘    └─────┘            └──┬──┘    └──┬──┘
                                   公钥↕       公钥↕
                                   私钥        私钥
                                   
    n=3: 3个密钥                   n=3: 3对密钥(6个密钥)
    ┌─────┐    ┌─────┐            ┌─────┐    ┌─────┐
    │  A  │────│  B  │            │  A  │    │  B  │
    └──┬──┘    └──┬──┘            └──┬──┘    └──┬──┘
       │          │                公钥↕      公钥↕
       └────┬─────┘                私钥       私钥
            │                      
         ┌──┴──┐                 ┌─────┐
         │  C  │                 │  C  │
         └─────┘                 └──┬──┘
                                  公钥↕
                                  私钥
                                   
    n=4: 6个密钥                   n=4: 4对密钥(8个密钥)
    计算公式:n*(n-1)/2           计算公式:n对密钥

3. 在JASPt中的实际应用模式

渲染错误: Mermaid 渲染失败: Parse error on line 20: ... C4 --> N1[ENC(加密会话密钥)] C5 -----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'

四、JASPt完整加密体系图解

1. 整体架构

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    JASPt企业级加密体系                          │
├─────────────────┬───────────────────────────────────────────┤
│  密钥管理层      │  HSM硬件加密模块                            │
│                 │  • 存储根密钥                             │
│                 │  • 提供加密运算                           │
├─────────────────┼───────────────────────────────────────────┤
│  服务层         │  JASPt核心服务                             │
│                 │  • 密钥生成/轮换                          │
│                 │  • 加解密API                             │
│                 │  • 访问控制                              │
├─────────────────┼───────────────────────────────────────────┤
│  客户端层        │  集成SDK                                │
│                 │  • 自动识别+enc标记                      │
│                 │  • 调用解密服务                          │
├─────────────────┼───────────────────────────────────────────┤
│  配置中心        │  Nacos/Apollo等                          │
│                 │  • 存储ENC(密文)                         │
│                 │  • 配置分发                              │
└─────────────────┴───────────────────────────────────────────┘

2. 数据流详解

HSM硬件 应用系统 Nacos配置中心 JASPt服务 开发者 HSM硬件 应用系统 Nacos配置中心 JASPt服务 开发者 加密阶段 解密阶段(应用启动) 1. 请求加密配置 2. 获取加密密钥 3. 返回密钥句柄 4. 使用AES加密数据 5. 返回ENC(密文) 6. 存储加密配置 7. 拉取配置 8. 返回ENC(密文) 9. 请求解密 10. 获取解密密钥 11. 返回密钥句柄 12. 使用AES解密数据 13. 返回明文配置

3. 安全边界清晰划分

复制代码
        安全边界#1                    安全边界#2
    ┌─────────────────┐        ┌─────────────────┐
    │  开发/测试环境    │        │  生产环境        │
    │                 │        │                 │
    │  • 开发公钥      │        │  • 生产公钥      │
    │  • 测试配置密文  │        │  • 生产配置密文  │
    │                 │        │                 │
    └─────────────────┘        └─────────────────┘
            │                            │
            │                            │
    ┌───────┴─────────────┐    ┌─────────┴───────┐
    │    JASPt开发实例      │    │  JASPt生产实例    │
    │                     │    │                 │
    │  • 开发私钥(隔离)   │    │  • 生产私钥(隔离)│
    │  • 开发HSM分区      │    │  • 生产HSM分区   │
    └─────────────────────┘    └─────────────────┘

五、总结

核心要点:

  1. 对称加密:一把密钥,加解密都用它

    • ✅ 速度快,适合大数据量
    • ⚠️ 密钥分发困难
  2. 非对称加密:公钥+私钥配对

    • ✅ 解决密钥分发问题
    • ⚠️ 速度慢,适合小数据量
  3. JASPt实际应用:混合加密模式

    • 非对称加密交换对称密钥
    • 对称加密保护实际配置数据
    • +enc标记触发自动解密流程

这种设计实现了:

  • 配置中心存储密文,即使被入侵也不泄露敏感信息
  • 密钥与配置分离,符合安全最佳实践
  • 透明化加解密,对业务代码无侵入
相关推荐
不急不躁1232 小时前
Android16 给应用默认获取权限
android·java
C雨后彩虹2 小时前
5G网络建设
java·数据结构·算法·华为·面试
码界奇点3 小时前
基于Spring Boot的后台管理系统设计与实现
java·spring boot·后端·车载系统·毕业设计·源代码管理
爱敲点代码的小哥3 小时前
json序列化和反序列化 和 数组转成json格式
java·前端·json
零度念者3 小时前
Java IO/NIO 深度解析:从底层原理到高性能图片网关实战
java·nio
这是程序猿3 小时前
基于java的ssm框架经典电影推荐网站
java·开发语言·spring boot·spring·经典电影推荐网站
Nan_Shu_6143 小时前
学习:Java (1)
java·开发语言·学习
花花无缺3 小时前
搞清‘’时区设置‘’以及Mysql的`DATETIME` 和 `TIMESTAMP`
java·mysql