数字签名原理与使用场景

📅 2026/7/31 22:31:09 👁️ 阅读次数 📝 编程学习
数字签名原理与使用场景

一、原理

数字签名是基于公钥密码学(非对称加密),核心是私钥签名、公钥验签。

流程

步骤

说明

1️⃣ 哈希

对原文使用 Hash 算法(如 SHA-256)生成消息摘要

2️⃣ 签名

用发送者的私钥对摘要加密,生成数字签名

3️⃣ 发送

将原文 + 数字签名一起发给接收者

4️⃣ 验签

接收者用发送者的公钥解密签名,得到摘要;同时对原文计算哈希

5️⃣ 比对

两者一致 → 签名有效;不一致 → 被篡改或来源无效

关键点

  • 私钥只有签名者持有,不可泄露 → 保证了不可伪造性

  • 公钥公开,任何人都能验证 → 保证了可验证性

  • 摘要一致说明原文未被篡改 → 保证了完整性

二、常见算法

  • RSA — 最经典,如 "RSA-2048"

  • ECDSA — 椭圆曲线签名,更高效,如 "ECDSA P-256"

  • DSA — 美国政府标准数字签名算法

  • SM2 — 中国国密算法,基于椭圆曲线

三、使用场景

📌 典型场景

场景

说明

代码/软件签名

微软、苹果要求驱动、软件包数字签名,防止恶意篡改

文档签名

PDF、Word 文档数字签名,具有法律效力(电子合同)

SSL/TLS 证书

HTTPS 证书用数字签名验证服务器身份

区块链/加密货币

交易授权,钱包地址用私钥签名证明所有权

邮件签名 (S/MIME)

验证邮件发送者身份、保证内容不被篡改

政务/金融

电子证照、政务审批、金融交易防抵赖

📌 简单类比

把数字签名想象成**"支票上的手写签名"**:

  • 私钥 = 你的笔,只有你能签

  • 公钥 = 你的笔迹样本,银行用来核对

  • 哈希 = 支票上的防伪底纹

  • 签名内容 = 支票上的金额(金额改了就无效)

四、与加密的区别

--

数字签名

数据加密

目的

证明"是谁发的" + "内容没改"

保证内容保密

用什么密钥

私钥签名、公钥验签

公钥加密、私钥解密

方向

单向,非对称

可双向