淺談支付網(wǎng)關(guān)的接口安全協(xié)議(2011-01-06 00:20:22)
網(wǎng)上支付對個(gè)人站長放開,是近兩年的事。我做過基本上市面上所有第三方支付的網(wǎng)關(guān)對接開發(fā),通過對各服務(wù)商的接口安全協(xié)議進(jìn)行對比,發(fā)現(xiàn)各服務(wù)商的純http協(xié)議的接口,所采取的加密和驗(yàn)證方式基本上是一致的。 簡單來說,這種加密驗(yàn)證方式,有三個(gè)要點(diǎn)。 1、選擇要參與加密的字段。凡是不允許修改的字段,都必須參與加密。舉例說,一個(gè)網(wǎng)上支付接口,參與加密的字段至少應(yīng)包括:訂單號(hào)、支付金額、回傳地址、商家代碼。 舉個(gè)簡單的例子吧。 比如,第三方支付接口規(guī)定的字段名如下: 拼串如下: 32位加密: 至此加密過程完成,只需要把加密結(jié)果加上所需傳遞的字段,一起用get方式傳過去即可。注意,參與加密的字段,除密鑰之外,必須都傳遞過去。 解密的過程,跟加密基本一樣。比如,a端把加密信息傳給b端。b端會(huì)收到各關(guān)鍵參數(shù)以及a端發(fā)過來的關(guān)鍵參數(shù)加密結(jié)果。b端的工作就是還原a端的拼串、做MD5加密運(yùn)算等一系列操作,然后,把運(yùn)算結(jié)果跟傳過來的加密結(jié)果對比。如果b端的運(yùn)算結(jié)果與a端傳過來的運(yùn)算結(jié)果一致,說明參數(shù)值未被篡改,就可以放心使用了。 其實(shí),這個(gè)加密解密的方式,關(guān)鍵就是雙方約定的那個(gè)密鑰。密鑰只有a、b雙方知道,那么篡改參數(shù)的第三方就拼不出正確的加密結(jié)果,在b端就不能獲得驗(yàn)證。 該協(xié)議可以廣泛應(yīng)用于各類接口,自己的不同系統(tǒng)之間如果需要接口對接,也完全可以借用這種方式。 本文來自老彭的職業(yè)博客 http://www./?p=156 |
|