社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
支付宝app支付的流程如下(图片来自支付宝开放平台)
本文重点讨论支付宝的签名验证机制,即图中的第二步。
支付宝签名采用RSA算法。RSA是一种用非对称加密算法。只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。支付宝建议采用2048位秘钥。
简单来说,签名主要包含两个过程:摘要和非对称加密,首先对需要签名的数据做摘要(类似于常见的MD5)后得到摘要结果,然后通过签名者的私钥对摘要结果进行非对称加密即可得到签名结果。
支付宝开放平台目前支持两种签名算法
开放平台签名算法名称 | 标准签名算法名称 | 备注 |
---|---|---|
RSA2 | SHA256WithRSA | (强烈推荐使用),强制要求RSA密钥的长度至少为2048, |
RSA | SHA1WithRSA | 对RSA密钥的长度不限制,推荐使用2048位以上 |
使用支付宝签名首先要通过签名生成工具生成应用公钥和私钥,将公钥上传至支付宝开放平台,同时平台会生成支付宝公钥,支付宝会在接口返回信息时使用SHA1withRsa进行加密,这个公钥客户端不会用到。
客户端的签名流程如下:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!