认证的技术栈(持续更新中)
- 什么是 Token(令牌)?
- 数字签名signature
- jwt 的基本原理介绍
- 自定义一个jwt 工具类,并用接口测试
- Springboot + jwt 实现带权限的认证(不使用spring security
简介
数字签名是一种用于验证数字信息(如文件、消息、交易等)真实性、完整性和发送者身份的技术,本质上是传统手写签名在数字世界的安全替代方案。它通过密码学手段,确保信息在传输或存储过程中未被篡改,且能证明发送者的身份(防止抵赖),它的核心功能就两个字:认证( Authentication)。
核心作用
-
- 身份验证:证明信息确实来自声称的发送者(而非伪造);
-
- 完整性校验:确保信息在传输 / 存储过程中未被篡改(哪怕一个字符的改动都会被发现);
-
- 抗抵赖:发送者无法否认自己发送过该信息(因为签名与发送者的私钥绑定)。
技术原理(基于非对称加密)
数字签名依赖 “非对称加密”(公钥 - 私钥体系)和 “哈希函数” 实现,核心步骤如下:
- 生成消息摘要(哈希值):
发送者先对原始信息(如一份合同)使用哈希函数(如 SHA-256)生成一个固定长度的 “消息摘要”(类似信息的 “数字指纹”)。
- 特点:哈希值不可逆,且原始信息哪怕微小改动(如改一个字),哈希值会完全不同。
- 用私钥加密摘要,生成签名:
发送者用自己的私钥(仅自己持有,绝对保密)对消息摘要进行加密,得到的加密结果就是 “数字签名”。 - 发送信息 + 签名:
发送者将原始信息、数字签名一起发送给接收者。 - 接收者验证签名:
- 接收者先用发送者的
公钥(公开可查,用于解密对应私钥加密的内容)解密数字签名,得到原始消息摘要; - 同时,接收者对收到的原始信息重新计算哈希值,得到新的消息摘要;
- 对比两个摘要:若一致,说明信息未被篡改且确实来自该发送者;若不一致,则信息无效。
原理图:

应用场景
- 电子合同 / 协议:确保签约方身份真实、内容未被篡改;
- 软件发布:验证软件安装包是否被篡改(如官方软件的签名);
- 在线交易 / 支付:确认交易指令的发送者身份,防止伪造;
- 邮件 / 消息加密:证明发件人身份,防止邮件被篡改。
- 身份认证: 如接口开发中的 认证。
简言之,数字签名通过密码学技术,解决了数字世界中 “信息是谁发的”“信息有没有被改过” 这两个核心问题,是保障数字信息安全的基础技术之一。
843

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



