一、原理
数字签名是基于公钥密码学(非对称加密),核心是私钥签名、公钥验签。
流程
|
步骤 |
说明 |
|---|---|
|
1️⃣ 哈希 |
对原文使用 Hash 算法(如 SHA-256)生成消息摘要 |
|
2️⃣ 签名 |
用发送者的私钥对摘要加密,生成数字签名 |
|
3️⃣ 发送 |
将原文 + 数字签名一起发给接收者 |
|
4️⃣ 验签 |
接收者用发送者的公钥解密签名,得到摘要;同时对原文计算哈希 |
|
5️⃣ 比对 |
两者一致 → 签名有效;不一致 → 被篡改或来源无效 |
关键点
-
私钥只有签名者持有,不可泄露 → 保证了不可伪造性
-
公钥公开,任何人都能验证 → 保证了可验证性
-
摘要一致说明原文未被篡改 → 保证了完整性
二、常见算法
-
RSA — 最经典,如 "RSA-2048"
-
ECDSA — 椭圆曲线签名,更高效,如 "ECDSA P-256"
-
DSA — 美国政府标准数字签名算法
-
SM2 — 中国国密算法,基于椭圆曲线
三、使用场景
📌 典型场景
|
场景 |
说明 |
|---|---|
|
代码/软件签名 |
微软、苹果要求驱动、软件包数字签名,防止恶意篡改 |
|
文档签名 |
PDF、Word 文档数字签名,具有法律效力(电子合同) |
|
SSL/TLS 证书 |
HTTPS 证书用数字签名验证服务器身份 |
|
区块链/加密货币 |
交易授权,钱包地址用私钥签名证明所有权 |
|
邮件签名 (S/MIME) |
验证邮件发送者身份、保证内容不被篡改 |
|
政务/金融 |
电子证照、政务审批、金融交易防抵赖 |
📌 简单类比
把数字签名想象成**"支票上的手写签名"**:
-
私钥 = 你的笔,只有你能签
-
公钥 = 你的笔迹样本,银行用来核对
-
哈希 = 支票上的防伪底纹
-
签名内容 = 支票上的金额(金额改了就无效)
四、与加密的区别
|
-- |
数字签名 |
数据加密 |
|---|---|---|
|
目的 |
证明"是谁发的" + "内容没改" |
保证内容保密 |
|
用什么密钥 |
私钥签名、公钥验签 |
公钥加密、私钥解密 |
|
方向 |
单向,非对称 |
可双向 |

6670

被折叠的 条评论
为什么被折叠?



