什么是数字签名?
一个很好的说明文档可以参考 What is a Digital Signature?,中文翻译可以参考:数字签名是什么?。
简单来说,签名主要包含两个过程:摘要和非对称加密,首先对需要签名的数据做摘要(类似于常见的 MD5)后得到摘要结果,然后通过签名者的私钥对摘要结果进行非对称加密即可得到签名结果。
开放平台支持的签名算法
开放平台签名算法名称 标准签名算法名称 备注
RSA2 SHA256WithRSA 强制要求 RSA 密钥的长度至少为 2048
RSA SHA1WithRSA 对 RSA 密钥的长度不限制,推荐使用 2048 位以上
由于计算能力的飞速发展,从安全性角度考虑,蚂蚁金服在原来 SHA1WithRSA 签名算法的基础上,新增了支持 SHA256WithRSA 的签名算法。该算法在摘要算法上比 SHA1WithRSA 有更强的安全能力。
目前 SHA1WithRSA 的签名算法会继续提供支持,但为了您的应用安全,强烈建议使用 SHA256WithRSA 的签名算法。
注意事项:
协议参数:开放平台的报文标准中,sign_type 参数用于指定签名算法,若使用 SHA256WithRSA 签名算法则在报文中需要指定 sign_type=RSA2,若您使用开放平台 SDK,可参考 SDK 相关文档说明。
避免公私钥混用:不同签名算法的签名密钥是隔离的。由于同时提供了两套签名算法,若选择了特定的签名算法,请保证使用对应的私钥签名,同时使用对应的支付宝公钥进行验签。