笔记:Modern Cryptography

一、Backlog

详见: https://www.processon.com/view/link/69b8c34cf1f9d079f908c814


二、Ai Prompt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
我根据我的风格,将现代加密学分为:
1. Public-key cryptography(涉及公钥、私钥)
1. 同钥协商
1. 方式·壹
1. 发送方
1. 首先,将公钥_1发送给接收方
2. 然后,当接收到来自接收方的公钥_2时,基于私钥_1,使用协商算法,将公钥_2 -> 同钥
2. 接收方
1. 首先,将公钥_2发送给发送方
2. 然后,当接收到来自发送方的公钥_1时,基于私钥_2,使用协商算法,将公钥_1 -> 同钥
2. 方式·贰
1. 发送方
1. 首先,基于公钥,使用上封算法,将同钥 -> 密文
2. 然后,将密文发送给接收方
2. 接收方
1. 当接收到来自发送发的密文后,基于私钥,使用解封算法,将密文 -> 同钥
2. 公钥上封-私钥解封
1. 发送方
1. 首先,基于公钥,使用上封算法,将明文 -> 密文
2. 然后,将密文发送给接收方
2. 接收方
1. 当接收到来自发送方的密文后,基于私钥,使用解封算法,将密文 -> 明文
3. 私钥加签-公钥鉴签
1. 方式·壹:私钥加签-公钥解签
1. 发送方
1. 首先,使用哈希函数,将明文 -> 哈希值_1
2. 然后,基于私钥,使用加签算法,将哈希值_1 -> 签名
3. 接着,将(签名、明文)发送给接收方
2. 接收方
1. 首先,当接收到来自发送方的(签名、明文)后
1. 基于公钥,使用解签算法,将签名 -> 哈希值_1
2. 使用哈希函数,将明文 -> 哈希值_2
2. 然后,将(哈希值_1、哈希值_2)进行对比
2. 方式·贰:私钥加签-公钥验签
1. 发送方
1. 首先,使用哈希函数,将明文 -> 哈希值_1
2. 然后,基于私钥,使用加签算法,将哈希值_1 -> 签名
3. 接着,将(签名、明文)发送给接收方
2. 接收方
1. 首先,当接收到来自发送方的(签名、明文)后,使用哈希函数,将明文 -> 哈希值_2
2. 然后,基于(签名、公钥、哈希值_2),使用验签算法,获得 `Boolean data type`
2. Symmetric-key algorithm(涉及同钥)
1. 数据上封
2. 数据加签
1. 方式・壹
2. 方式・贰
3. 方式・參
4. 方式・肆
3. CHF(Cryptographic hash function)
1. 加签辅助(明文 -> 哈希函数 -> 哈希值)
2. 密码封存
3. 密钥派生
1. 方式・壹:根据密钥派生密钥
2. 方式・贰:根据密码派生密钥
4. 数据完整性校验

三、Related Link

  1. Mind Map Link
    1. https://www.processon.com/view/link/69b77cb3fb5b0412d316e344
  2. Wikipedia Link
    1.
  3. Hexo Blog Link
    1. http://blog.wangjia.ink/2026/03/16/笔记:ModernCryptography/
  4. Architecture Diagram Link

四、Related Attachement

  1. eddx

五、Public-key cryptography

1. 📄 概述

Public-key cryptography 是指:基于一对密钥,对数据进行操作


2. 📄 基本用法

  1. 同钥协商
  2. 公钥上封-私钥解封
  3. 私钥加签-公钥解签

2.1. 同钥协商

2.1.1. 📄 实现方式

2.1.1.1. 方式・壹
2.1.1.1.1. 📄 相关流程
  1. 发送方
    1. 首先,将公钥_1发送给接收方
    2. 然后,当接收到来自接收方的公钥_2时,基于私钥_1,使用协商算法,将公钥_2 -> 同钥
  2. 接收方
    1. 首先,将公钥_2发送给发送方
    2. 然后,当接收到来自发送方的公钥_1时,基于私钥_2,使用协商算法,将公钥_1 -> 同钥

2.1.1.2. 方式・贰
2.1.1.2.1. 📄 相关流程
  1. 发送方
    1. 首先,基于公钥,使用上封算法,将同钥 -> 密文
    2. 然后,将密文发送给接收方
  2. 接收方
    1. 当接收到来自发送发的密文后,基于私钥,使用解封算法,将密文 -> 同钥

2.2. 公钥上封-私钥解封

2.2.1. 📄 相关流程

  1. 发送方
    1. 首先,基于公钥,使用上封算法,将明文 -> 密文
    2. 然后,将密文发送给接收方
  2. 接收方
    1. 当接收到来自发送方的密文后,基于私钥,使用解封算法,将密文 -> 明文

📄 优劣分析

优势

劣势

2.3. 私钥加签-公钥鉴签

2.3.1. 📄 实现方式

  1. 方式・壹:私钥加签-公钥解签
  2. 方式・贰:私钥加签-公钥验签
2.3.1.1. 方式・壹:私钥加签-公钥解签
2.3.1.1.1. 📄 相关流程
  1. 发送方
    1. 首先,使用哈希函数,将明文 -> 哈希值_1
    2. 然后,基于私钥,使用加签算法,将哈希值_1 -> 签名
    3. 接着,将(签名、明文)发送给接收方
  2. 接收方
    1. 首先,当接收到来自发送方的(签名、明文)后
      1. 基于公钥,使用解签算法,将签名 -> 哈希值_1
      2. 使用哈希函数,将明文 -> 哈希值_2
    2. 然后,将(哈希值_1、哈希值_2)进行对比


2.3.1.2. 方式・贰:私钥加签-公钥验签
2.3.1.2.1. 📄 相关流程
  1. 发送方
    1. 首先,使用哈希函数,将明文 -> 哈希值_1
    2. 然后,基于私钥,使用加签算法,将哈希值_1 -> 签名
    3. 接着,将(签名、明文)发送给接收方
  2. 接收方
    1. 首先,当接收到来自发送方的(签名、明文)后,使用哈希函数,将明文 -> 哈希值_2
    2. 然后,基于(签名、公钥、哈希值_2),使用验签算法,获得 Boolean data type


六、Symmetric-key algorithm

1. 📄 概述

Symmetric-key algorithm 是指:基于一个密钥,对数据进行操作


2. 📄 基本用法

  1. 数据上封
  2. 数据加签

2.1. 数据上封

2.1.1. 📄 相关分类

  1. Block cipher
  2. Stream cipher
2.1.1.1. Block cipher
2.1.1.1.1. 📄 相关流程

1.

Block cipher 是指:

  1. 发送方
    1. 首先,将数据切分为多个长度相同的数据块
    2. 然后,使用上封算法,将每个数据块 -> 密文块
    3. 接着,拼接所有的密文块,生成密文
  2. 接收方

2.1.1.1.2. 📄 实现方式

详见: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation


2.1.1.1.3. 📄 适用场景
  1. 杜绝误码
  2. 硬件资源充足
  3. 需要离线处理数据
  4. 需要处理的数据的长度固定

2.1.1.2. Stream cipher
2.1.1.2.1. 📄 相关流程

Stream cipher 是指:

  1. 发送方
    1. 长度较小的数据为一个数据块,源源不断的使用特定的算法,将数据块 -> 密文块
  2. 接收方
    1. 源源不断的使用解封算法,将密文块 -> 数据块

2.1.1.2.2. 📄 适用场景
  1. 容忍误码
  2. 硬件资源受限
  3. 需要实时处理数据
  4. 需要处理的数据的长度未知

2.1.2. 📄 相关流程

  1. 发送方
    1. 首先,基于同钥,使用上封算法,将明文 -> 密文
    2. 然后,将密文发送给接收方
  2. 接收方
    1. 当接收到来自发送方的密文时,基于同钥,使用解封算法,将密文 -> 明文

2.2. 数据加签

2.2.1. 📄 实现方式

2.2.1.1. 方式・壹
2.2.1.1.1. 📄 相关流程
  1. 发送方
    1. 首先,使用哈希函数,将明文 -> 哈希值_1
    2. 然后,基于同钥,使用加签算法,将哈希值_1 -> 签名
    3. 接着,将(签名、明文)发送给接收方
  2. 接收方
    1. 当接收到来自发送方的(签名、明文)后
      1. 基于同钥,使用解签算法,将签名 -> 哈希值_1
      2. 使用哈希函数,将明文 -> 哈希值_2
    2. 然后,将(哈希值_1、哈希值_2)进行对比

2.2.1.2. 方式・贰
2.2.1.2.1. 📄 相关流程
  1. 发送方
    1. 首先,使用哈希函数,将明文 -> 哈希值_1
    2. 然后,基于同钥,使用加签算法,将哈希值_1 -> 签名_1
    3. 接着,将(签名_1、明文)发送给接收方
  2. 接收方
    1. 当接收到来自发送方的(签名_1、明文)后
      1. 使用哈希函数,将明文 -> 哈希值_2
      2. 基于同钥,使用加签算法,将哈希值_2 -> 签名_2
    2. 然后,将(签名_1、签名_2)进行对比

2.2.1.3. 方式・參
2.2.1.3.1. 📄 相关流程
  1. 发送方
    1. 首先,使用哈希函数,将(明文、同钥)-> 哈希值_1
    2. 然后,将(哈希值_1、明文)发送给接收方
  2. 接收方
    1. 当接收到来自发送方的(哈希值_1、明文)后,使用哈希函数,将(明文、同钥) -> 哈希值_2
    2. 然后,将(哈希值_1、哈希值_2)进行对比


2.2.1.4. 方式・肆
2.2.1.4.1. 📄 相关流程
  1. 发送方
    1. 首先,基于同钥,使用加签算法,将明文 -> 签名_1
    2. 然后,将(签名_1、明文)发送给接收方
  2. 接收方
    1. 在接收到来自发送方的(签名_1、明文)后,基于同钥,使用加签算法,将明文 -> 签名_2
    2. 然后,将(签名_1、签名_2)进行对比


笔记:Modern Cryptography
https://wangjia5289.github.io/2026/03/16/笔记:ModernCryptography/
Author
知北
Posted on
March 16, 2026
Licensed under