signature类用于数字签名与验证以确保数据完整性及来源可信,基于非对称密钥加密摘要值,支持rsa-sha256、ecdsa-p256、eddsa等算法,流程含哈希、私钥签名、公钥验签,需严格校验编码一致性、数据原始性、算法标识及公钥有效性。

Signature类用于对变量数据进行数字签名和验证,确保数据完整性与来源可信性。核心在于使用非对称密钥(如RSA、ECDSA)对摘要值加密生成签名,再用公钥解密比对完成验证。
支持的签名算法
常见算法包括:
• RSA-SHA256:适合通用场景,私钥签名、公钥验签,需注意密钥长度(推荐≥2048位)
• ECDSA-P256:轻量高效,适用于资源受限环境,私钥更短但安全性相当
• EdDSA(如Ed25519):高性能、抗侧信道攻击,无需随机数参与签名,推荐新项目优先选用
签名流程关键步骤
实际调用需严格遵循顺序:
• 对原始变量数据(字符串、字节流等)计算SHA-256等安全哈希值
• 使用私钥对哈希值执行签名运算,输出二进制或Base64编码的签名串
• 将原始数据、签名、所用算法标识(如"RSA-SHA256")一并传输或存储
验证逻辑必须校验的点
仅比对签名是否“能解开”是不够的,还需确认:
• 签名使用的公钥与签名方声明的身份一致(例如绑定证书或预置公钥)
• 原始数据未被篡改——重新哈希后与签名中恢复的摘要完全匹配
• 算法标识与实际执行验签的算法一致,防止算法降级攻击(如强制用MD5验签)
常见易错细节
容易导致验签失败的实际问题:
• 变量数据在签名与验证环节编码不一致(如签名用UTF-8、验证误用GBK)
• 签名前对数据做了隐式处理(如trim空格、JSON序列化格式差异、时间戳精度截断)
• 公钥格式错误(PEM中缺失头尾标记、含多余空行、使用了证书而非纯公钥)










