RSA和RSA2签名算法区别

新建应用只支持RSA2签名方式,目前已使用RSA签名方式的应用仍然可以正常调用接口,详情请见开放平台接口签名方式升级公告

什么是数字签名?

一个很好的说明文档可以参考What is a Digital Signature?,中文翻译可以参考:数字签名是什么?

简单来说,签名主要包含两个过程:摘要和非对称加密,首先对需要签名的数据做摘要(类似于常见的MD5)后得到摘要结果,然后通过签名者的私钥对摘要结果进行非对称加密即可得到签名结果。

开放平台支持的签名算法

开放平台签名算法名称 标准签名算法名称 备注
RSA2 SHA256WithRSA 强制要求RSA密钥的长度至少为2048
RSA SHA1WithRSA 对RSA密钥的长度不限制,推荐使用2048位以上

由于计算能力的飞速发展,从安全性角度考虑,蚂蚁金服在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签名算法。该算法在摘要算法上比SHA1WithRSA有更强的安全能力。

目前SHA1WithRSA的签名算法会继续提供支持,但为了您的应用安全,强烈建议使用SHA256WithRSA的签名算法。

注意事项

  1. 协议参数:开放平台的报文标准中,sign_type参数用于指定签名算法,若使用SHA256WithRSA签名算法则在报文中需要指定sign_type=RSA2,若您使用开放平台SDK,可参考SDK相关文档说明
  2. 避免公私钥混用:不同签名算法的签名密钥是隔离的。由于同时提供了两套签名算法,若选择了特定的签名算法,请保证使用对应的私钥签名,同时使用对应的支付宝公钥进行验签。
onlineServer