第三方支付渠道加密算法

没有绝对的加密算法,实际工程上都是考虑到破解的成本即可。
比如,破解你的一个漏洞,能获得10元的收益,但是需要花费大型机器运行1天,成本就划不来,没人愿意干这个事情。

加密算法

  1. 非对称加密RSA
    解密基于大数因式分解成两个质数,位数越长越安全,1024位RSA密钥基本安全,2048位密钥及其安全。银行和支付宝使用此种加密算法
    http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

  2. AES、DES 对称加密
    解密难度依赖位数,大型机已经可以破解128位,所以现在最低也要256的AES

  3. MD5 哈希算法的一种,算出的是一个固定长度的数字,算法是不可逆的,常用于密码存储,签名效验。是可破解的,虽然不可逆,但是目前可通过彩虹库(一个存储着前后映射关系的库7.6万亿条记录)暴力破解。
    工程上,采取加盐的方式,这样破解就需要先生成加盐后的“彩虹库”,大大增加了破解的成本和时间。
    我看微信支付的回调签名就是用的这种方式

第三方支付渠道加密选择

  1. 支付宝
    RSA加密,两对公私钥对
    客户端保存公钥public1,私钥private2
    支付宝服务端保存私钥private1,公钥public2

客户端请求的数据:公钥加密,私钥签名
支付宝返回的数据:私钥解密,公钥验证签名

(1)其中私用强烈推荐RSA2签名(SHA256)验签,极其安全
支付宝支付签名规范

  1. 微信
    用的是对传输的数据字段,加盐md5生成签名字段,接收端去验证签名的方式,保证数据安全,没有去加密明文的参数数据。大致例子:
    签名=MD5(key1=value1&key2=value2&randomNum=?&key=?.......),其中:
    (1)Key1,key2等是参数,可以约定顺序和参与签名的字段
    (2)randomNum是每次请求生成的随机数,起到加盐的效果
    (3)key值是双方都知道的一个密钥,上传至微信服务端保存
    以上三点都是起到,增大破解难度的效果。
    微信支付安全规范

总结:实际工程上,基本就是用上述两种方案,或者为了区分通用做法稍作修改,就满足需求。

市面上各个充值渠道接入费率(截止201711)

你可能感兴趣的:(第三方支付渠道加密算法)