<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>

          Python-SecureHTTPC/S 架構(gòu)的加密通信庫

          聯(lián)合創(chuàng)作 · 2023-09-29 07:25

          Python-SecureHTTP,C/S 架構(gòu)的加密通信庫。

          說在前面:

              在HTTP協(xié)議中,傳輸數(shù)據(jù)是明文,被第三方截獲后很容易看出數(shù)據(jù),所以現(xiàn)在主流建議是HTTPS加密傳輸,如Chrome,新版本用HTTP會提示不安全。

              除此之外,我們也可以約定一種或多種加密算法對傳輸?shù)臄?shù)據(jù)在客戶端加密、服務端解密,并且使用簽名,這樣第三方截獲,也無法獲取數(shù)據(jù)明文,且防篡改,大大增加傳輸安全性。

          軟件內(nèi)容:

              通過使用RSA+AES讓HTTP傳輸更加安全,即C/S架構(gòu)的加密通信!

          加密算法:

              Python-SecureHTTP使用的加密算法相關(guān)如下,使用相同標準,其他語言如Java、PHP、Go、JS等均可通信。

              1. AES加解密::

                  模式:CBC

                  密鑰長度:128位

                  密鑰key和初始偏移向量iv一致

                  補碼方式:PKCS5Padding

                  加密結(jié)果編碼方式:十六進制

              2. RSA加解密::

                  算法:RSA

                  填充:RSA_PKCS1_PADDING

                  密鑰格式:符合PKCS#1規(guī)范,密鑰對采用PEM形式

              3. 簽名::

                  對請求參數(shù)或數(shù)據(jù)添加公共參數(shù)后排序再使用MD5簽名。

              更多了解可以參考https://www.jianshu.com/p/b092b4fac27c,上面包的實現(xiàn)邏輯參考此文。

          安裝使用:

              1. 安裝:pip install Python-SecureHTTP

              2. 邏輯:

              客戶端上傳數(shù)據(jù)加密 ==> 服務端獲取數(shù)據(jù)解密 ==> 服務端返回數(shù)據(jù)加密 ==> 客戶端獲取數(shù)據(jù)解密
          
              NO.1 客戶端上傳數(shù)據(jù)加密流程::
          
                  1. 客戶端隨機產(chǎn)生一個16位的字符串,用以之后AES加密的秘鑰,AESKey。
                  2. 使用RSA對AESKey進行公鑰加密,RSAKey。
                  3. 參數(shù)加簽,規(guī)則是:對所有請求或提交的字典參數(shù)按key做升序排列并用"參數(shù)名=參數(shù)值&"形式連接。
                  4. 將明文的要上傳的數(shù)據(jù)包(字典/Map)轉(zhuǎn)為Json字符串,使用AESKey加密,得到JsonAESEncryptedData。
                  5. 封裝為{key : RSAKey, value : JsonAESEncryptedData}的字典上傳服務器,服務器只需要通過key和value,然后解析,獲取數(shù)據(jù)即可。
          
              NO.2 服務端獲取數(shù)據(jù)解密流程::
          
                  1. 獲取到RSAKey后用服務器私鑰解密,獲取到AESKey
                  2. 獲取到JsonAESEncriptedData,使用AESKey解密,得到明文的客戶端上傳上來的數(shù)據(jù)。
                  3. 驗簽
                  4. 返回明文數(shù)據(jù)
          
              NO.3 服務端返回數(shù)據(jù)加密流程::
          
                  1. 將要返回給客戶端的數(shù)據(jù)(字典/Map)進行加簽并將簽名附屬到數(shù)據(jù)中
                  2. 上一步得到的數(shù)據(jù)轉(zhuǎn)成Json字符串,用AESKey加密處理,記為AESEncryptedResponseData
                  3. 封裝數(shù)據(jù){data : AESEncryptedResponseData}的形式返回給客戶端
          
              NO.4 客戶端獲取數(shù)據(jù)解密流程::
          
                  1. 客戶端獲取到數(shù)據(jù)后通過key為data得到服務器返回的已經(jīng)加密的數(shù)據(jù)AESEncryptedResponseData
                  2. 對AESEncryptedResponseData使用AESKey進行解密,得到明文服務器返回的數(shù)據(jù)。

              3. 調(diào)用:

                  Python-SecureHTTP提供兩個核心類,EncryptedCommunicationClient(針對邏輯NO.1、NO.4)和EncryptedCommunicationServer(針對邏輯NO.2、NO.3)。

              4. 核心類說明:

                  4.1 EncryptedCommunicationClient:客戶端加密通信類,提供clientEncrypt(NO.1加密)、clientDecrypt(NO4解密)兩個方法。

                  4.2 EncryptedCommunicationServer:服務端加密通信類,提供serverDecrypt(NO.2解密)、serverEncrypt(NO.3加密)兩個方法。

                  4.3 更多API文檔,請訪問https://python-securehttp.readthedocs.io/#api-documentation

          示例代碼:

              1. 不同語言的AES加密的示例:https://gitee.com/staugur/Python-SecureHTTP/tree/master/examples/AES-CBC-PKCS5Padding

              2. 不同語言的RSA加密的示例:https://gitee.com/staugur/Python-SecureHTTP/tree/master/examples/RSA-PKCS1-PEM

              3. 不同語言的MD5簽名的示例:還沒有找

              4. 不同語言的HMAC-SHA256的示例(暫時沒用此算法作簽名):https://gitee.com/staugur/Python-SecureHTTP/tree/master/examples/HMAC-SHA256

              5. B/S示例:https://gitee.com/staugur/Python-SecureHTTP/tree/master/examples/BS-RSA

          說在后面:

              !歡迎提交PR、Issue

          瀏覽 25
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          編輯 分享
          舉報
          <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>
                  国产3344在线观看视频 | 日本A V在线视频 | 日本黄色视频在线看 | 精品一区二区三区四区五区六区 | 日韩人妻无码中文字幕 |