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

RSA公钥加密算法简介
非对称加密算法只有短的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) 上传生成的公钥,获取支付宝公钥。


资料:
支付宝帮助中心文档: 即时到账


参考资料:http://blog.csdn.net/jolie_yang/article/details/50826130#t3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值