浅谈支付网关的接口安全协议(2011-01-06 00:20:22)
网上支付对个人站长放开,是近两年的事。我做过基本上市面上所有第三方支付的网关对接开发,通过对各服务商的接口安全协议进行对比,发现各服务商的纯http协议的接口,所采取的加密和验证方式基本上是一致的。 简单来说,这种加密验证方式,有三个要点。 1、选择要参与加密的字段。凡是不允许修改的字段,都必须参与加密。举例说,一个网上支付接口,参与加密的字段至少应包括:订单号、支付金额、回传地址、商家代码。 举个简单的例子吧。 比如,第三方支付接口规定的字段名如下: 拼串如下: 32位加密: 至此加密过程完成,只需要把加密结果加上所需传递的字段,一起用get方式传过去即可。注意,参与加密的字段,除密钥之外,必须都传递过去。 解密的过程,跟加密基本一样。比如,a端把加密信息传给b端。b端会收到各关键参数以及a端发过来的关键参数加密结果。b端的工作就是还原a端的拼串、做MD5加密运算等一系列操作,然后,把运算结果跟传过来的加密结果对比。如果b端的运算结果与a端传过来的运算结果一致,说明参数值未被篡改,就可以放心使用了。 其实,这个加密解密的方式,关键就是双方约定的那个密钥。密钥只有a、b双方知道,那么篡改参数的第三方就拼不出正确的加密结果,在b端就不能获得验证。 该协议可以广泛应用于各类接口,自己的不同系统之间如果需要接口对接,也完全可以借用这种方式。 本文来自老彭的职业博客 http://www./?p=156 |
|
来自: java_laq小馆 > 《支付网关》