已更新系列文章包括104、61850、modbus 、储能系统等,欢迎关注。

该篇文章将介绍哈希、摘要、私钥、公钥、签名、验签等基本概念以及各概念之间关系。
1、基本概念
1.1 哈希 (Hash)
-
是什么 :一种数学算法 (函数),能将任意长度的输入数据,转换成固定长度的、看似随机的输出。
-
干什么用 :为数据生成一个"数字指纹"。它的核心特性是单向性 (不可逆推回原文)和雪崩效应(数据改1个比特,输出结果面目全非)。
-
常见算法:SHA-256、SHA-512、SM3。
1.2. 摘要 (Digest)
-
是什么 :哈希算法的输出结果。是一个固定长度的二进制字符串。
-
干什么用 :是原始数据的"唯一短标识"。由于原始数据可能很大(如10GB固件),无法直接加密,所以用摘要作为其精简代表,用于后续签名等操作。
-
举例 :对"Hello"做SHA-256哈希,输出的
185f8db3...就是摘要。
1.3. 私钥 (Private Key)
-
是什么 :非对称加密算法中,由用户自己秘密保管的一串长随机数。
-
干什么用 :代表用户的唯一数字身份 。它的核心原则是绝不泄露 。在签名中,它是用来生成签名的工具。
-
关键属性:只能由持有者本人使用。
1.4. 公钥 (Public Key)
-
是什么 :与私钥成对出现的另一串长随机数,由私钥通过数学运算生成。
-
干什么用 :是私钥的"公开验证器"。它可以完全公开发布 ,不必保密。在签名中,它是用来验证签名的工具。
-
核心关系:公钥加密的数据,只有配对的私钥能解;私钥签名的数据,只有配对的公钥能验。
1.5. 签名 (Signature)
-
是什么 :对摘要进行私钥加密运算后得到的一串密文,是签名者"亲手盖章"的数字凭证。
-
干什么用 :作为数据的防伪标签,附加在原始数据后一起发送,用于向接收方证明"这份数据确实是我(私钥持有者)发的,且我没有改动过"。
-
生成流程 :
签名 = 加密算法(私钥, 哈希(原始数据))
1.6. 验签 (Verification)
-
是什么 :用公钥解开签名,还原出摘要,并与本地重新算出的摘要进行比对的过程。
-
干什么用 :接收方用来判断数据是否可信的最终裁决步骤。
-
判定逻辑:
-
若 解开签名得到的摘要 == 本地重新计算的摘要 → 验签通过 → 证明数据来源于私钥持有者且未被篡改。
-
若不相等 → 验签失败 → 数据不可信,直接丢弃。
-
2、各名词关系
2.1关系一:哈希(函数)与 摘要(结果)
-
关系 :算法与产出的关系。
-
描述 :哈希(如 SHA-256)是一个算法 。你把任意数据("Hello"或 10GB 电影)塞进去,它吐出来的固定长度的二进制数,就叫摘要。
-
公式 :
摘要 = 哈希算法(原始数据)
2.2 关系二:私钥 与 公钥(配对关系)
-
关系 :数学绑定的密钥对,天生的"一对"。
-
描述 :它们俩是同时被"算"出来的。用私钥加密的东西,只有配对的公钥能解开;反过来也一样(公钥加密,私钥解密)。 但必须记住:在签名场景中,我们用的是"私钥加密,公钥解密"这一半的特性。
-
公式 :
(私钥, 公钥) = 密钥生成算法()
2.3 关系三:摘要 与 签名(输入与产出的关系)
-
关系 :被加工者 与 加工产物的关系。
-
描述 :签名不是 直接对 10GB 的原始数据算出来的(那样太慢)。签名是对那个 32 字节的摘要 进行"私钥加密"算出来的。摘要缩短了数据长度,使得签名变得飞快。
-
公式 :
签名 = 非对称加密算法(私钥, 摘要)(即:用私钥加密摘要)
2.4 关系四:签名 与 验签(逆运算关系)
-
关系 :正向锁定 与 逆向解锁的关系。
-
描述 :验签就是签名的逆过程。接收方用公钥把签名解开,还原出一个摘要(称为摘要B),然后与本地算出的摘要(摘要A)比对。
-
公式 :
解密出的摘要 = 非对称解密算法(公钥, 签名) -
判定 :
解密出的摘要 == 本地算出的摘要=> 验签通过
3 完整的实际执行流程(数据流向图)
如果你在写 crypto 模块的代码,实际执行的顺序是这样的:
| 步骤 | 角色 | 动作 | 使用到的组件 | 产出 |
|---|---|---|---|---|
| 1 | 发送方 | 计算数据指纹 | 数据 + 哈希算法 | 摘要A |
| 2 | 发送方 | 锁定指纹 | 摘要A + 私钥 | 签名 |
| 3 | 发送方 | 打包发送 | 原始数据 + 签名 | (网络数据流) |
| (网络传输) | ||||
| 4 | 接收方 | 重新计算指纹 | 收到数据 + 哈希算法 | 摘要B |
| 5 | 接收方 | 解开锁定的指纹 | 收到的签名 + 公钥 | 摘要C |
| 6 | 接收方 | 核心逻辑比对 | 摘要B 是否等于 摘要C | 验签通过/失败 |
4、总结
-
最底层(基础工具) :哈希算法 和 密钥生成算法(造出公私钥对)。
-
中间层(加工厂) :依赖底层工具,通过私钥+摘要 产出 签名。
-
最上层(检验员) :依赖底层公钥,通过公钥+签名还原摘要,并与本地摘要比对。
私钥 给摘要 加密,产出签名 ;公钥 解开签名 ,对比新算出的摘要 ,这就是验签 。哈希 是算摘要的工具,摘要是连接原始数据和签名过程的"中间信使"。
欢迎使用104协议解析小程序:104调试及进制转换
欢迎关注
往期文章推荐: