数字签名(Digital Signature)是一种用来验证数据完整性、身份认证和防抵赖性的加密技术,广泛用于电子合同、区块链、软件发布、电子邮件等场景。


✍️ 一、数字签名的作用

  1. 身份认证
    确保消息确实来自某个特定的发送者。

  2. 完整性校验
    检查消息是否在传输过程中被篡改。

  3. 防抵赖(不可否认性)
    发送者不能否认其发送的内容,因为只有他持有私钥。


🔐 二、数字签名的工作原理

数字签名基于非对称加密(如 RSA、ECDSA)和哈希算法(如 SHA-256),流程如下:

✅ 签名过程(发送端):

  1. 原始数据 → 使用哈希算法 → 生成消息摘要

  2. 消息摘要 → 使用发送者的私钥加密 → 得到数字签名

  3. 将:原始数据 + 数字签名 一起发送给接收者。

🔎 验签过程(接收端):

  1. 接收到原始数据和数字签名。

  2. 发送者的公钥解密数字签名 → 得到签名时的消息摘要

  3. 对收到的原始数据重新计算哈希 → 得到本地摘要

  4. 比较两者摘要:

    • 若一致,则说明数据未被篡改,签名者身份可信;

    • 若不一致,则签名无效或数据已被篡改。


🧠 三、举个简单例子

假设 Alice 向 Bob 发送一份文件,并用她的私钥签名:

  • Alice 计算文件哈希值,比如得到:A1B2C3...

  • Alice 用她的私钥加密这个哈希值,生成签名

  • 她将文件 + 签名 一起发给 Bob

Bob 的验证过程

  • Bob 对文件重新计算哈希 → 得到 A1B2C3...

  • Bob 用 Alice 的公钥解密签名 → 得到一个哈希值

  • 两个哈希值一致 → 签名合法 ✅


🔧 四、常见的数字签名算法

算法名称 描述 安全性
RSA 经典的非对称加密算法,支持签名 安全但密钥长
DSA 数字签名标准,美国政府认证 安全但签名速度慢
ECDSA 椭圆曲线数字签名算法 更快更短密钥,广泛使用
EdDSA 新一代签名算法 快速、安全、现代


📦 五、应用场景

  • ✅ 软件发布(验证软件未被篡改,如 .sig 文件)

  • ✅ HTTPS(SSL/TLS 证书背后就用了数字签名)

  • ✅ 区块链/比特币(每笔交易都需要签名)

  • ✅ 电子合同、电子发票(确保合同合法有效)

  • ✅ 邮件加密(如 OpenPGP、S/MIME)


📌 六、数字签名 vs 手写签名

项目 手写签名 数字签名
安全性 易伪造 基于数学难题,难伪造
可验证性 需要人工判断 自动验证、可追溯
抵赖性 可否认 不可否认
应用场景 纸质文档 电子文档/通信/金融
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐