CMDB學習之API加密請求動態

2022-07-20 04:57:12 字數 3814 閱讀 1192

#實現是通過時間戳+秘鑰進行 md5 加密處理

#使用rest_framework ,首先要安裝pip去安裝djangorestframework ,這個模組

#import

hashlib

import

time

from django.conf import

settings

from rest_framework.views import

apiview

from rest_framework.response import

response

from api import

models

from api import

service

#服務端臨時測試

key = '

alksdgjaldks'#

解密def

gen_key(key,ctime):

key_str = '

{}|{}

'.format(key,ctime)

md5 =hashlib.md5()

md5.update(key_str.encode(

'utf-8'))

return

md5.hexdigest()

class

assettest(apiview):

defget(self,request):

return response("

get ok ")

defpost(self,request):

result =

#拿到key 和ctime ,md5 正加密處理和請求的資料進行校驗

sign = request._request.get.get('

sign')

ctime = request._request.get.get('

ctime')

sign_key =gen_key(key,ctime)

if sign !=sign_key:

result[

'status

'] =false

result[

'data

'] = '

檢驗不成功

'return response(result)

客戶端測試api 

#

!/usr/bin/env python

#-*- coding:utf-8 -*-

import

requests

import

time,hashlib

#通過雙方有key 的方式進行驗證,

key = '

alksdgjaldks

'ctime =time.time()

defgen_key():

key_str = '

{}|{}

'.format(key,ctime)

md5 =hashlib.md5()

md5.update(key_str.encode(

'utf-8'))

return

md5.hexdigest()

#通過雙方有key 的方式進行驗證

ret =requests.post(

url = '

',params =

)print(ret.text)

注意測試url路由   

url(r'^test',views.assettest.as_view()),#cbv 寫法

上面是簡單的加密,但是若劫持url依然可以去訪問,所進一步進行修改

key = '

alksdgjaldks'#

解密def

gen_key(key,ctime):

key_str = '

{}|{}

'.format(key,ctime)

md5 =hashlib.md5()

md5.update(key_str.encode(

'utf-8'))

return

md5.hexdigest()

sign_record ={}

class

assettest(apiview):

defget(self,request):

return response("

get ok ")

defpost(self,request):

result =

#拿到key 和ctime ,md5 正加密處理和請求的資料進行校驗

sign = request._request.get.get('

sign')

ctime = request._request.get.get('

ctime')

server_time = int(time.time()*1000)

if server_time - int(ctime) > 5000:

result[

'status

'] =false

result[

'data

'] = '

證書已經過期!

'return

response(result)

if sign in

sign_record:

result[

'status

'] =false

result[

'data

'] = '

證書已經使用!

'return

response(result)

if sign !=gen_key(key,ctime):

result[

'status

'] =false

result[

'data

'] = '

檢驗不成功

'return

response(result)

sign_record[sign] =ctime

return response(result)

#

!/usr/bin/env python

#-*- coding:utf-8 -*-

import

requests

import

time,hashlib

#通過雙方有key 的方式進行驗證,

key = '

alksdgjaldks

'ctime = int(time.time() * 1000)

defgen_key():

key_str = '

{}|{}

'.format(key,ctime)

md5 =hashlib.md5()

md5.update(key_str.encode(

'utf-8'))

return

md5.hexdigest()

#通過雙方有key 的方式進行驗證

ret =requests.post(

url = '

',params =

)print(ret.url,ret.text)

學習筆記 ajax請求網路api

不囉嗦,直接上 1 在瀏覽器輸入 深圳 你會看到如下結果 他返回的是json資料 api.asilu.com getname date 2018 09 10 id 101280601 t 1536508800 api.asilu.com getname date 2018 09 10 id 1012...

實習總結之JAVA請求API資料

通過httpclient請求,有兩種請求方式 get請求和post請求。get請求 string url 請求的url 先獲取連線客戶端工具 獲取構建url的uribuilder uribuilder uribuilder new uribuilder url 由於get請求的引數都是拼裝在url位...

登入密碼加密鹽和API請求授權碼sign

登入密碼加密鹽 md5 data password sing ty 紅色字元就是組裝密碼用的,防止人家暴力破解之後直接看到密碼 sign授權碼 sign 加密需要 客戶端工程師,解密 伺服器端工程師 1.sign授權碼在header頭中組裝了did,version等資料,伺服器工程師把sign解密之...