数字签名校验
简介
数字签名在信息安全领域扮演着至关重要的角色,其主要作用包括但不限于以下几个方面:
- 数据完整性:数字签名能够确保信息在传输过程中未被篡改。如果接收方收到的数据与发送方发送的数据不一致(例如,在传输过程中被第三方修改),数字签名验证将会失败,从而提醒接收方数据的完整性已被破坏。
- 身份验证:数字签名可以用来验证消息确实来自于声称的发送者。因为只有拥有正确私钥的人才能生成有效的数字签名,所以签名的存在和有效性可以作为发送者身份的一个证明。
- 不可否认性:一旦某人用其私钥对信息进行了签名,他就不能否认这一行为。这是因为除了该私钥的所有者,其他任何人都无法生成正确的签名。这为交易、合同等提供了法律上的证据。
- 防止重放攻击:通过在签名中包含时间戳或其他唯一标识符,数字签名可以帮助防止重放攻击,即攻击者重复发送截获的信息以试图产生未经授权的影响。
- 增强信任:在电子商务和其他在线交易中,数字签名增加了双方之间的信任度。买家和卖家可以通过数字签名确认对方的身份,并确信交易条款不会被篡改。
用法
1、后端在配置中开启数字签名校验,可以不配置数字签名密钥,有自己自动生成并打印在控制台
2、前端使用第1步生成的数字签名私钥来对发送到接口的数据进行签名,并携带在请求头中的X-signature
中(生成的签名时要注意后端是否开启了 isUrlSafe 配置,开启后前端生成的签名必须是 url safe 的)
3、后端的组件会自动使用公钥对X-signature
签名进行校验
4、后端返回给前端的数据生成数字签名的方法是,在Controller
中注入RsaSignatureUtils
,调用rsaSignatureUtils.sign(byte[] data)
方法