支付宝之私钥签名公钥验签

非对称加密算法。只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。

目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。

 

加密用公钥,解密用私钥。

 

签名&&加密

文档:

“RSA是一种公钥加密算法。能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。主要用于公钥加密私钥解密、私钥签名公钥验签。”--from 支付宝文档

“使用各自语言对应的SHA1WithRSA签名函数利用商户私钥对待签名字段进行签名,并进行Base64编码。”--from 支付宝文档

(r: 我可以翻白眼吗,前面不懂签名是什么意思,相当于加密码,还是解密。!公钥加密私钥解密与私钥签名公钥验签用的是同一套公钥体系,但数字签名与数字加密实现过程是相反的,密钥对也有所区别。数字签名对身份进行认证,保证发送消息的完整性。 数字加密可保证信息的保密性)

 

支付宝签名验签:

 

“支付宝公钥:开发者请求支付宝并获得返回时,开发者用于验签使用的公钥”--from 支付宝文档

 

签名算法: 商户生成签名字符串,现支持RSA

签名要求: 请求和接收数据均需要校验签名

(r: 接收支付宝返回的数据需通过支付宝公钥进行验签,确认返回数据者身份为支付宝。

客户端将商户的签名字符串用私钥签名上传到服务器,服务器端通过开发人员上传的公钥进行验签,确认身份。)

 

密钥分为三种类型:

1) 开放平台密钥: 应用公钥 // app_id 和密钥 openapi

2) 合作伙伴密钥:商户 // partner_id和密钥 mapi  签名方式:MD5,RSA,DSA(签名方式依据具体产品)。 功能包括:快捷登陆,移动支付,即时到账收款,手机网页支付。

3) 无线产品密钥: (expired)

 

签名流程:

1) 组装待签名字符串 

2) 调用签名函数

a. "使用各自语言对应的SHA1WithRSA签名函数利用商户私钥对待签名字段进行签名,并进行Base64编码。" --from aliDoc

 ( r:网关为mapi,商户即合作伙伴,利用合作伙伴密钥和partner_id 进行签名)

3) 使用签名

"得到的签名结果也是一个字符串,这个字符串就是sign参数的值,将这个字符串赋值给sign参数并发起请求。"--from aliDoc

 

验签流程:

1) 组装待验签字符串

2) 调用签名验签函数

“RSA:使用各自语言对应的SHA1WithRSA签名验证函数,传入待验签字段、支付宝公钥、参数sign对应的值(该参数为支付宝返回)进行验签,根据返回结果判定是否验签通过。

 

 

RSA加密方式:

1)通过openssl工具生成公私钥 

2) 上传生成的公钥,获取支付宝公钥。

你可能感兴趣的:(支付宝之私钥签名公钥验签)