建行E商貿通支付開發系列之三(2 金鑰生成與交換)

2021-07-24 05:39:27 字數 1650 閱讀 4104

前言:在看本篇文章的時候,一定要細心些,因為這個總分的內容非常的重要,對於我接觸過的幾家公司,都是在這一步耽誤的時間最長的。
這一部分的內容雖然是重點之一,但是除了編寫**以外,其它的重點也沒有什麼太多的了,**這塊大家用的語言都不一樣,所以就關於下面兩個內容,我分享一下我的經驗吧。

關於生成商戶的金鑰,原理就是通過rsa演算法生成出金鑰,金鑰包含公鑰和私鑰。

這個功能不是在程式裡一直都要用到的,只要在交換金鑰的時候做一次就可以了,所以就寫乙個功能頁,給乙個按鈕,功能就是用來獲取建行的兩個金鑰,這個頁面與平台、建行都沒有什麼太大的關係,就是當金鑰丟的時候,再獲取一次就好了。

現在就需要用到上面說的金鑰傳輸url了,做乙個post請求,如果請求成功,建行會返回乙個byte的陣列;得到陣列後,要驗證一下長度是否小於6並且前6位是否為0;把前6個0去掉後,就得到了加密的金鑰了;下來對金鑰進行解密,最後就得到了對應的金鑰了。在解密的時候,用des方法解密。

在請求建行的時候,會要求乙個type引數,我這裡寫就是type=des或type=pub,通過這個來區分要獲取公鑰還是des私鑰。

首先,讀取你生成的公鑰,用base64轉成byte陣列,然後des加密方法對這個位元組陣列加密,加密方法需要兩個引數,第乙個引數是byte陣列,第二個引數是個key,這個key是乙個string,通過文件可以看出,這個key的就是商戶**+年月日的乙個字串(yymmdd)。

加密後的還是乙個byte陣列,再把這個加密過後的陣列前6位補0,最後,把這個陣列的內容以流的形式返回給建行就ok了。

一直有人在問我關於金鑰交換、簽名與驗籤、加密與解密的問題,為此我又把以前寫的**給過了一遍,在這裡寫出來,看看是否能有所幫助。

在交換金鑰時是沒有簽名與驗籤的操作的。

首先先說把自己的公鑰給建行,這時我們需要對自己已經生成的公鑰進行加密,加密時所用到的方法是des方法對資料進行加密,需要的引數有2個,乙個是公鑰的資料,另乙個是「商戶號+年年月月日日」組成的字串(沒有加號哦)。再下來,把得到的這個byte的資料給擴容,增加6個位置(在資料的前面增加),然後補充6個0在這個陣列的前面,最後,把這個資料給返回就好了,最後得到的資料形式為:000000+資料+商戶號+年年月月日日,注意,在實際的資料中都沒有加號哦。

接下來再說獲取建行的兩個金鑰,乙個是建行的公鑰,乙個是建行提供報文加密用的des金鑰,兩個金鑰的處理方法都一樣,只是在請求建行的時候是通過type=pub或type=des來區分要獲取得到哪個金鑰。

假設我們已經得到建行返回的乙個公鑰的資料,接下來就要先驗證前6位是否為0,驗證成功,就把前6位去掉得到乙個不帶前6個0的資料,然後還是用des演算法解密,最後把這個解密得到資料儲存成檔案就ok了。

先說商戶傳送給建行的,當得到報文以後,是要先加密再簽名,簽名用rsa,加密用tripledes,這是兩個操作,並且這兩個操作都是對原報文(明文)進行操作的。加密時用從建行獲取的des金鑰,簽名時用自己的私鑰。

再說建行請求商戶的,當商戶得到建行的請求報文時,是要先解密再驗籤,簽名用rsa,加密用tripledes,而驗簽時的引數一定用通過解密後得到的資料,不能像上面說的還用建行發過來的密文。解密時還是用從建行獲取的des金鑰,驗籤時用建行的公鑰。

另,給建行傳送請求報文後,建行一定會有乙個影響結果的報文,我們也需要對這個影響報文做解密和驗籤的操作,同理,建行請求商戶後也需要有乙個商戶的響應報文,我們也需要對響應報文做加密和簽名的操作。

建行E商貿通對接 1

工作n多年了,從來沒寫過技術部落格,最近在做建行的e商貿通對接,文件比較有限,對相關業務和名詞也不是很熟悉,很多基礎知識也不紮實,前面同事已經做了一部分基礎工作,但是剛接手的時候確實有點蒙。幸虧在網上搜到這個部落格系列,了解了一些基本概念,才順利開發完建行的介面,也突然有衝動把相關的東西整理一下,做...

建行E商貿通支付開發系列之一(了解E商貿通)

事先要在平台註冊賬號 開席位號,在銀行開通網銀 席位號關聯之類的工作都不再多說了,這些事情在後面會陸續的說到,我們先直接看一種最常見最完整的交易流程,先對e商貿通有個大概的了解。a 採購方 買家 b 方 賣家 1 a在平台上要購買b的商品,a需要先登入建行的網銀,做入金操作,先把要購買的商品錢放到e...

商貿通帳套隱藏方法

問題現象 新稅版。在帳套列表處。ctrl f9 給帳套設上密碼。儲存後。在主介面就看不到這個帳套了。然後使用的時候按ctrl f8 錯誤輸入的話沒任何提示。正確的話就能看到帳套名了。原因分析 新稅版。在帳套列表處。ctrl f9 給帳套設上密碼。儲存後。在主介面就看不到這個帳套了。然後使用的時候按c...