電商交互系統中,常用的加密手段

系統對接第三方支付,系統安全,應該是重中之重的一步。下面,我們就一起探討常用的加密場景與加密用法。

首先,我們要明確一下概念。我們經常聽說:“公鑰加密,私鑰解密”;還有就是“私鑰加密,公鑰解密”之說,然而,實際應用中,以及在密碼學中,沒有這麼叫的。

 

公鑰加密私鑰解密

“公鑰加密私鑰解密”,通常稱之爲“公共密鑰加密系統”。利用公鑰進行加密,而用私鑰解密,這種場景屬於數據保護,數據傳輸過程中都是密文傳輸的,該中方式通常稱爲信封,如我們郵件時的信封,保證內部不被人看到。而如果利用私鑰加密,利用公鑰解密,雖然行得通,但任何擁有公鑰的接收方都可以解開數據,而公鑰本身就是公開的,這樣實現不了數據保護的目的。

 

私鑰加密公鑰解密

“私鑰加密公鑰解密”,則通常稱之爲“私鑰簽名,公鑰驗證”,或“公鑰密鑰簽名系統”。顧名思義,私鑰加密,公鑰解密,這種方式,是對數據做一個數字簽名。在傳輸的數據中,加上一個數字簽名,保證信息傳輸的完整性、發送者的身份認證、防止交易中的抵賴發生。該種方式通常稱爲手印,保證收到該信的人,能夠確認發信人的身份。然而數據傳輸過程中,都是採用明文進行傳輸的。

 

而電商交互系統中,對接第三方支付時,一般都是選用“私鑰簽名,公鑰驗證”的方式。因爲黑客竊取了用戶的支付信息之後,它一旦篡改了支付信息,這筆交易就會交易失敗。所以它拿到用戶的支付信息時沒有用的。

 

下面,一起來看一下,使用“私鑰簽名,公鑰驗籤”的過程:

假設一個場景。某電商商家A,要與某第三方支付公司B對接。

 

首先,A電商與支付公司B,要保留自己的私鑰,告知對方,自己的公鑰。

即:A把A公鑰告知支付公司B,A自己保護好A私鑰;B把B公鑰告知A電商,B自己保存好B私鑰。

       

當電商A有用戶購物時,即A欲傳遞支付信息給B,而支付公司B對接了很多家電商,爲了告知B,這是A電商上面發送的支付請求,A會對該信息做一個數字簽名。

1、通常,我們會對支付信息做一個MD5,得到支付信息的HASH值,即信息摘要。摘要格式:【MD5(信息)】


2、然後,A使用自己的私鑰,對該摘要信息進行加密,得到【A私鑰(MD5(信息))】


3、最後將明文請求信息與密文一起傳遞給B。B得到的支付信息:【(明文信息)+A私鑰(MD5(信息))】

 

                              (明文+加密的摘要)

 

B接收到請求後,開始驗籤。得到如上格式的請求信息:【(明文信息)+A私鑰(MD5(信息))】

1、使用跟A相同的HASH算法,如同一個MD5算法,對明文信息進行加工得到:【MD5(信息)!!!】


2、使用A提供的公鑰文件,對傳遞過來的私鑰信息進行解密,即對【A私鑰(MD5(信息))】文件進行解密,過程如下:【A公鑰(A私鑰(MD5(信息)))】=【MD5(信息)】


3、比較【MD5(信息)】與【MD5(信息)!!!】,如果相同,表示(信息)在傳遞過程中沒有被他人修改過,驗籤通過。


 

這樣就完成A向B的一次請求,下面普及一下支付的知識。

這是,B已經確認了A的身份,且信息沒有被篡改,那麼開始跳到支付公司B的支付頁面,用戶開始在B的支付頁面,完成支付工作。

具體的支付工作,是商戶A的用戶,在支付平臺B完成的。那麼商戶A如何知道A有沒有支付成功呢?這時候B就要回調A。並且分爲手動回調和自動回調。支付成功後跳到一個支付成功頁面,該頁面有一個返回商戶。手動回調是用戶點擊了返回商戶,就會回調到A的方法,返回A的頁面。如果用戶直接關閉了返回商戶頁面,或者停留在該頁面好久,都沒有進行操作,則會定時觸發異步回調,調用A的方法。

回調的過程中,也需要對數據進行簽名。不過簽名方式與上面完全類似。

 

B回調A時操作如下

1、同樣,我們會對返回信息做一個MD5,得到返回信息的HASH值,即信息摘要。摘要格式:【MD5(返回信息)】


2、然後,B使用自己的私鑰,對該摘要信息進行加密,得到【B私鑰(MD5(返回信息))】


3、最後將明文請求信息與密文一起傳遞給B。B得到的支付信息:【(明文信息)+B私鑰(MD5(返回信息))】

 

                                      (明文+加密的摘要)


A接收到從B發送的回調信息,開始驗籤。得到如上格式的請求信息:【(明文信息)+B私鑰(MD5(返回信息))】

1、使用跟B相同的HASH算法,如同一個MD5算法,對明文信息進行加工得到:【MD5(返回信息)!!!】


2、使用B提供的公鑰文件,對傳遞過來的私鑰信息進行解密,即對【B私鑰(MD5(返回信息))】文件進行解密,過程如下:【B公鑰(B私鑰(MD5(返回信息)))】=【MD5(返回信息)】


3、比較【MD5(返回信息)】與【MD5(返回信息)!!!】,如果相同,表示(信息)在傳遞過程中沒有被他人修改過,驗籤通過。


 

通過上面的講解,我們大體上介紹了,電商交互系統中,如何做數字簽名。保證了信息在傳遞過程中,不被篡改。

 

文章推薦:

http://bbs.csdn.net/topics/90224776

http://justjavac.iteye.com/blog/1144151#comments

發佈了280 篇原創文章 · 獲贊 1114 · 訪問量 101萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章