<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          支付寶加密規(guī)則,你真的懂嗎?

          共 2384字,需瀏覽 5分鐘

           ·

          2021-04-06 11:34

          支付是一個安全等級很高的場景,系統(tǒng)間交互的每一條數(shù)據(jù)的泄露都有可能造成及其大的損失。因此支付時系統(tǒng)間交互的每一條數(shù)據(jù)都會采取加密措施。這里梳理一下支付寶支付時用到的加密規(guī)則,請大家參考。


          圖片來自 Pexels


          什么是簽名?


          在了解簽名前,先回顧一下支付的交互流程。如上圖所示,支付的過程中可以大概分為六個步驟:

          • 用戶選擇自己的商品提交訂單。

          • 商家服務(wù)器將商品信息和所需要的金額發(fā)給支付寶,生成支付寶訂單。

          • 支付寶訂單返回成功之后生成一個支付頁面,方便手機支付或者網(wǎng)頁支付。

          • 手機調(diào)起支付寶 App 進行支付。

          • 輸入支付密碼發(fā)送給支付寶服務(wù)器。

          • 支付寶服務(wù)器轉(zhuǎn)賬成功,告知商家服務(wù)器某個訂單的金額轉(zhuǎn)賬成功。


          這 6 個步驟中,最為重要的是步驟 2 和步驟 6。拆解如下:

          商家服務(wù)器和支付寶服務(wù)器交互的過程中傳輸?shù)男畔惓C舾?,所以,在交互時必須防止中間人對于信息的篡改。例如步驟 2 將商品的金額改為 0,支付寶就誤認為是轉(zhuǎn)賬 0 元。


          數(shù)字簽名解決了交互時這一安全問題。它可以驗證一條消息或者文檔的真實性。


          在支付寶支付的接口中,有一個 sign 參數(shù)用來填寫簽名。這個簽名作用是為了防止信息偽造。通過這種方式可以有效的防止消息在傳遞過程中被篡改。


          簽名實現(xiàn)原理


          簽名原理


          數(shù)字簽名是一個信息安全的保障,它的實現(xiàn)依賴于雙方系統(tǒng)的密鑰。


          簽名過程如下:


          計算希望簽名的文檔的散列。不論輸入文檔的長度如何,輸出長度總是固定的。比如,使用 SHA256 就是 256 位。


          對結(jié)果散列和一些額外的元數(shù)據(jù)進行編碼。比如,接收方需要知道你使用的散列算法,否則不能處理簽名。


          使用私鑰加密編碼過的數(shù)據(jù),其結(jié)果就是簽名,可以追加到文檔中作為身份驗證的依據(jù)。

          驗證簽名(驗簽):接收方接收文檔并使用相同的散列算法獨立計算文檔散列。


          接著,她使用公鑰對消息進行解密,將散列解碼出來,再確認使用的散列算法是否正確,解密出的散列是否與本地計算的相同。

          非對稱加密


          支付寶采用 RSA 非對稱加密對信息進行簽名。非對稱加密是由一個公鑰和一個私鑰組成,一般代碼中命名為 public key 和 private key。


          非對稱加密的特點是:私鑰加密的信息只有公鑰才能解密,公鑰加密的信息只能有私鑰才能解密。


          一般會將私鑰進行保留,開發(fā)時一般會放在配置文件中,安全級別和數(shù)據(jù)庫賬號密碼一樣。


          公鑰會交給其他系統(tǒng),這樣系統(tǒng)間交互時中間人不知道密鑰的情況下,是無法破解交互的信息的。


          發(fā)送方只要保證私鑰不泄露,任何人發(fā)送給接收方的信息在簽名驗證時都無法匹配成功。


          支付寶的實現(xiàn)簽名的方式也大致如此,支付寶在信息交互的時候兩個很重要的名詞支付寶公鑰和應(yīng)用公鑰,這兩個秘鑰總是讓人混淆。


          這是因為支付寶提供了兩套 RSA 加密。一套是用來保證步驟 2 統(tǒng)一下單接口時的信息安全,另一套是用來保證步驟 6 回調(diào)時的信息安全。


          如下圖,步驟 2 商戶服務(wù)器通過紅色應(yīng)用私鑰(priv key 2)計算簽名,支付寶通過紅色應(yīng)用公鑰(pub key 2)進行驗簽。


          步驟 6 支付寶服務(wù)器通過藍色支付寶私鑰(priv key 6)計算簽名,商家通過藍色支付寶公鑰(pub key 6)驗證簽名。

          了解了簽名計算原理之后,再去管理平臺設(shè)置 App 信息的時候就游刃有余了,我以沙箱環(huán)境為例子。

          如上圖,說明使用 RSA2 加密方式,HASH 算法采用 SHA256。進入設(shè)置之后要設(shè)置應(yīng)用公鑰和保存支付寶公鑰。


          應(yīng)用公鑰和應(yīng)用私鑰,這兩個需要自己生成一對,保證步驟 2 的安全。生成方式跳轉(zhuǎn)支付寶開放平臺開發(fā)助手。


          支付寶公鑰和支付寶私鑰是支付寶提供的,私鑰支付寶自己保留的,和自己服務(wù)器的應(yīng)用私鑰一樣,人家不會提供出來。公鑰復(fù)制下來用于在回調(diào)時進行簽名的認證。

          對稱加密


          簽名雖然可以防止中間人的信息篡改,但是無法防止中間人信息查看。比如步驟 2 中,向支付寶發(fā)送的商品金額,中間人即可獲取每天中該商家交易的金額。


          信息在網(wǎng)絡(luò)中傳輸感覺是一個虛無縹緲的過程,網(wǎng)絡(luò)中信息有可能被不法分子進行攔截。

          因此在支付的過程中,會推薦使用 HTTPS 協(xié)議進行交互,使得交互的信息加密傳輸。


          而且,支付寶的很多接口還支持使用 AES 加密之后進行傳輸,使得信息更加安全。


          AES 加密是一種對稱加密算法,對稱加密算法相對于非對稱加密要簡單一點。系統(tǒng)間只存在一個密鑰,這個密鑰可以用來加密也可以用來解密。

          在與支付寶交互的信息可以通過 AES 加密。防止信息的泄露,官方對接口的解釋如下:

          若 OpenAPI 無 bizContent 傳參則無法使用 AES 密鑰加密,否則會報錯,當前 API 不支持加密請求。


          例如:alipay.user.info.share(支付寶會員授權(quán)信息查詢接口未使用 bizContent 傳參則無法使用 AES 密鑰加密。


          AES 和 RSA 關(guān)系


          AES 密鑰是對接口請求和響應(yīng)內(nèi)容進行加密,密文無法被第三方識別,從而防止接口傳輸數(shù)據(jù)泄露。


          RSA 密鑰是對接口請求和響應(yīng)內(nèi)容進行簽名,開發(fā)者和支付寶開放平臺分別加簽驗簽,以確認接口傳輸?shù)膬?nèi)容沒有被篡改。不論接口內(nèi)容是明文還是密文,RSA 均可正常簽名。


          開發(fā)者可對請求參數(shù)先做 AES 加密,然后對密文進行 RSA 簽名。


          作者:叁滴水

          出處:https://4m.cn/ZPW1A


          最近熬夜給大家準備了515套Java代碼,有一些是業(yè)務(wù)類的小項目,比如Java博客項目,也有腳手架、也有平時用一些的工具類、21套小程序代碼,也有一些游戲類的項目。

          掃以下二維碼并回復(fù)“Java”即可獲取


          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线免费观看黄片视频 | 欧美,国产特级黄片 | 国产青青草在线 | 中文字幕 日韩 欧美 | 欧美精品一卡 |