python django搭建接口數(shù)據(jù)加解密web

一展东、背景

1.1 背景:

  1. app訪問接口返回data數(shù)據(jù)進行了加密處理,測試抓包后不能直接查看結(jié)果属百,每次輸入加密內(nèi)容到IDE查看結(jié)果茬末,影響效率

1.2 解決方案:

  1. 使用python實現(xiàn)加解密,django搭建web實現(xiàn)網(wǎng)頁可訪問慢叨。實現(xiàn)輸入加密內(nèi)容纽匙、salt點擊解密可以直接查看解密后數(shù)據(jù)
  2. 后續(xù)考慮輸入接口地址和請求參數(shù),返回響應(yīng)結(jié)果拍谐。(可考慮增加一欄直接顯示解密之后的內(nèi)容)

1.3 實現(xiàn)步驟:

  1. 研究django web知識烛缔,參考慕課網(wǎng)免費視頻三小時帶你入門Django框架
  1. 使用python實現(xiàn)數(shù)據(jù)的加解密
  2. 搭建web解密實現(xiàn)輸入加密內(nèi)容、salt輸出解密內(nèi)容

最終實現(xiàn)效果如下:


image.png
image.png

二轩拨、模擬功能實現(xiàn)

2.1 開發(fā)環(huán)境

  1. pycharm
  2. Anaconda3

2.2 代碼實現(xiàn)

2.2.1 環(huán)境搭建

  1. 環(huán)境搭建參考:三小時帶你入門Django框架第一節(jié)
  2. 創(chuàng)建并使用虛擬環(huán)境
conda create -n testbench python=3
激活當(dāng)前環(huán)境
source activate
source deactivate
必須先進行一二步驟才可以激活環(huán)境
conda activate testbench
  1. 安裝django依賴
pip install -i https://pypi.douban.com/simple/ django==2.0
  1. 創(chuàng)建項目
cd code/python # 1. 自己創(chuàng)建的python項目目錄
django-admin startproject testbench # 2. 創(chuàng)建Django項目指令
cd testbench
python manage.py startapp decryption # 3.創(chuàng)建Django應(yīng)用指令
  1. 使用pycharm打開該項目

2.2.2 編碼階段

  1. decryption下新建templates/decryption/decryption.html

使用bootcss實現(xiàn)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>app接口數(shù)據(jù)加解密</title>
    <style>
        body {
            text-align: center
        }
    </style>
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" 
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"
            integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
            crossorigin="anonymous"></script>
</head>
<body>
<div class="container page-header">
    <h1>app接口數(shù)據(jù)加解密</h1>
</div>
<div class="container body-main">
    <form action="/decryption/decrypt" method="post">
        {% csrf_token %}
        <div class="row">
            <div class="col-lg-9">
                <div class="input-group">
                    <span class="input-group-addon" id="basic-addon1">文本</span>
                    <input id="input_data" type="text" class="form-control" placeholder="plain text"
                           aria-describedby="basic-addon1" name="input_text" value="{{ input_text }}">
                </div><!-- /input-group -->
            </div><!-- /.col-lg-6 -->
            <div class="col-lg-3">
                <div class="input-group">
                    <span class="input-group-addon" id="basic-addon1">鹽值</span>
                    <input id="input_salt" type="text" class="form-control" placeholder="salt"
                           aria-describedby="basic-addon1" name="salt" value="{{ salt }}">
                    </span>
                </div><!-- /input-group -->
            </div><!-- /.col-lg-6 -->
        </div><!-- /.row -->
        <br>
        <br>
        <br>
        <br>
        <button type="submit" class="btn btn-success" style="width: 100px">解密</button>
        <button type="submit" class="btn btn-danger" style="width: 100px; margin-left: 10px"
                formaction="/decryption/encrypt">加密
        </button>
    </form>
    <br>
    <br>
    <br>
    <br>
    <div class="input-group">
        <span class="input-group-addon" id="basic-addon1">結(jié)果</span>
        <textarea id="result" rows="10" type="text" class="form-control" placeholder="result"
                  aria-describedby="basic-addon1">{{ result }}</textarea>
    </div><!-- /input-group -->
</div>
</body>
</html>
  1. 應(yīng)用編輯視圖decryption/views.py践瓷,實際加解密邏輯根據(jù)自己項目來,這里只是模擬
from django.shortcuts import render


# Create your views here.
# 3des ecb 加密
def triple_desc_ecb_encrypt(request):
    if request.method == 'POST':
        input_text = request.POST.get('input_text', '')
        salt = request.POST.get('salt', '')
        # result = encrypt_3des_ecb(input_text, salt)
        result = "加密" + input_text + salt  # 模擬加密
        return render(request, "decryption/decryption.html", {
            'input_text': input_text,
            'salt': salt,
            'result': result
        })
    else:
        return render(request, "decryption/decryption.html")


# 3des ecb 解密
def triple_desc_ecb_decrypt(request):
    if request.method == 'POST':
        input_text = request.POST.get('input_text', '')
        salt = request.POST.get('salt', '')
        print("input_text = ", input_text)
        print("salt = ", salt)
        # result = decrypt_3des_ecb(input_text, salt)
        result = "解密" + input_text + salt  # 模擬解密
        return render(request, "decryption/decryption.html", {
            'input_text': input_text,
            'salt': salt,
            'result': result
        })
    else:
        return render(request, "decryption/decryption.html")

  1. 應(yīng)用編輯路由decryption/urls.py
from django.urls import path

import decryption.views

urlpatterns = [
    path("", decryption.views.triple_desc_ecb_encrypt),
    path("encrypt", decryption.views.triple_desc_ecb_encrypt),
    path("decrypt", decryption.views.triple_desc_ecb_decrypt)
]
  1. 項目編輯路由testbench/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('decryption/', include('decryption.urls')), # add this line
]
  1. 項目安裝應(yīng)用testbench/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # myapp decryption
    'decryption.apps.DecryptionConfig' # add this line
]
  1. 點擊IDE的運行按鈕
  2. 訪問http://127.0.0.1:8000/decryption/
image.png
image.png

三亡蓉、部署到linux服務(wù)器

3.1 部署環(huán)境

3.1.1 連接linux服務(wù)器

mac打開終端右鍵 -> 新建遠(yuǎn)程連接 -> ssh連接linux服務(wù)器


image.png
image.png

3.1.2 linux安裝Anaconda3

  1. 拷貝Anaconda3-2020.11-Linux-x86_64.sh
scp Anaconda3-2020.11-Linux-x86_64.sh root@serverip:/
  1. 添加anaconda3到環(huán)境變量
vim /etc/profile
#Anaconda
export PATH=$PATH:/root/anaconda3/bin
source /etc/profile
  1. 驗證anaconda3安裝成功
conda --version

3.1.3 使用anaconda3

  1. 拷貝代碼到linux根目錄
scp -r testbench root@serverip:/
  1. 創(chuàng)建testbench虛擬環(huán)境
conda create -n testbench python=3
  1. 激活當(dāng)前環(huán)境
source activatesource 
deactivate
conda activate testbench

說明:必須先進行一二步驟才可以激活環(huán)境

  1. 安裝依賴
pip install -i https://pypi.douban.com/simple/django==2.0
pip install -i https://pypi.douban.com/simple/pyDes

3.1.4 部署django

  1. 添加ip可訪問
 vim testbench/settings.py
把服務(wù)器ip添加進 ALLOW_HOST字段
  1. 啟動服務(wù)
python manage.py runserver serverip:8888 # 前臺啟動服務(wù)
nohup python manage.py runserver serverip:8888& # 后臺啟動服務(wù)

說明:

  • 一定要寫ip晕翠,默認(rèn)127.0.01只能自己訪問,局域網(wǎng)無法訪問
  • 前端啟動服務(wù)關(guān)閉服務(wù)器窗口砍濒,服務(wù)也會停止淋肾,建議后臺啟動服務(wù)

四、待辦事項

  1. 輸入結(jié)果json格式化
  2. 權(quán)限訪問控制(登錄賬號才可以訪問)
  3. 模擬接口訪問(直接測試app接口)

五爸邢、參考資料

  1. linux下Anaconda使用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末樊卓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杠河,更是在濱河造成了極大的恐慌碌尔,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件券敌,死亡現(xiàn)場離奇詭異唾戚,居然都是意外死亡,警方通過查閱死者的電腦和手機陪白,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門颈走,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咱士,你說我怎么就攤上這事立由。” “怎么了序厉?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵锐膜,是天一觀的道長。 經(jīng)常有香客問我弛房,道長道盏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮荷逞,結(jié)果婚禮上媒咳,老公的妹妹穿的比我還像新娘。我一直安慰自己种远,他們只是感情好涩澡,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坠敷,像睡著了一般妙同。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膝迎,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天粥帚,我揣著相機與錄音,去河邊找鬼限次。 笑死芒涡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掂恕。 我是一名探鬼主播拖陆,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼弛槐,長吁一口氣:“原來是場噩夢啊……” “哼懊亡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乎串,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤店枣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后叹誉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸯两,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年长豁,在試婚紗的時候發(fā)現(xiàn)自己被綠了钧唐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡匠襟,死狀恐怖钝侠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酸舍,我是刑警寧澤帅韧,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站啃勉,受9級特大地震影響忽舟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一叮阅、第九天 我趴在偏房一處隱蔽的房頂上張望刁品。 院中可真熱鬧,春花似錦浩姥、人聲如沸哑诊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镀裤。三九已至,卻和暖如春缴饭,著一層夾襖步出監(jiān)牢的瞬間暑劝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工颗搂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留担猛,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓丢氢,卻偏偏與公主長得像傅联,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子疚察,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345