這節主要是使用類封裝乙個簽名規則的練習,有乙個簽名規則的需求是:
a、輸入資料:1、請求資料:
vendorid=1697&poscode=pos006&ip=127.0.0.1&posversion=2.1.1.1.1&mac=;d4-81-d7-ca-20-29;7c-67-a2-9a-06-05;7c-67-a2-9a-06-06;7c-67-a2-9a-06-09;00-00-00-00-00-0000e0
2:商家編碼:
1697
b、計算規則:
1、將商家編碼(vendorid)1697進行兩次md5加密得到乙個字串 astr:09b764965ce4e92bed8bd3140e22d5cf
2、將請求資料
vendorid=1697&poscode=pos006&ip=127.0.0.1&posversion=2.1.1.1.1&mac=;d4-81-d7-ca-20-29;7c-67-a2-9a-06-05;7c-67-a2-9a-06-06;7c-67-a2-9a-06-09;00-00-00-00-00-0000e0
進行urldecode處理(編碼格式為utf-8)得到乙個字串urldecodestr:
vendorid=1697&poscode=pos006&ip=127.0.0.1&posversion=2.1.1.1.1&mac=;d4-81-d7-ca-20-29;7c-67-a2-9a-06-05;7c-67-a2-9a-06-06;7c-67-a2-9a-06-09;00-00-00-00-00-0000e0
3、urldecodestr + astr 拼接得到乙個待加密的字串 beforemd5
vendorid=1697&poscode=pos006&ip=127.0.0.1&posversion=2.1.1.1.1&mac=;d4-81-d7-ca-20-29;7c-67-a2-9a-06-05;7c-67-a2-9a-06-06;7c-67-a2-9a-06-09;00-00-00-00-00-0000e009b764965ce4e92bed8bd3140e22d5cf
然後將 beforemd5字串進行加密得到最終的簽名:
6f811b63b11d92ba4a359e6dc98eee31
我們來分析需求:
1、請求資料獲取到2、提取到商家編碼
3、將商家編碼程序2次md5 得到astr
4、再將請求資料進行一次urldecode,結果是urlstr
5、astr+url_str 進行 md5得到 beforemd5
6.將beforemd5 再次進行md5得到簽名
具體**實現:
from urllib import parseimport hashlib
class sign(object):#
定義類
def__init__
(self,req_data):
self.req_data = req_data #
這寫了self的話,在其他的函式裡面也可以用self.xx
self.get_verid()
self.get_sign()
def md5(self,s):#
定義加密函式
md =hashlib.md5()
md.update(s.encode())
return md.hexdigest()#
返回加密結果
def get_verid(self):#
定義獲取vendorid的函式
data_dict ={}
sub_list = self.req_data.split('&'
)
#已'&'分割請求資料,得到的結果是vendorid=1697 poscode=pos006 ip=127.0.0.1這樣的資料
for i in
sub_list:
k, v = i.split('
=')#
以'='分割每次迴圈i的值
data_dict[k] = v#
將分割i得到的k,v存到字典中
self.verid = data_dict.get('
vendorid
')#取到vendorid
defget_sign(self):
frist = self.md5(self.verid)#
將vendorid進行加密
astr = self.md5(frist)#
將vendorid進行第二次加密
url_str = parse.quote_plus(self.req_data)#
將請求資料進行urldecode編碼處理
self.sign = self.md5(astr+url_str)#
將拼接的字串進行md5加密
return self.sign#
得到最終簽名
if__name__ == '
__main__':
s='vendorid=1697&poscode=pos006&ip=127.0.0.1&posversion=2.1.1.1.1&mac=;d4-81-d7-ca-20-29;7c-67-a2-9a-06-05;7c-67-a2-9a-06-06;7c-67-a2-9a-06-09;00-00-00-00-00-0000e0
'abc =sign(s)#例項化類
(abc.sign)
#執行結果:2e8d260f14fc05a2881470504fb6f9d5
使用libzplay庫封裝乙個音訊類
裝載請說明原位址,謝謝 的編碼解碼器。庫本身是由winapi編寫,你無須額外的庫,也不需要mfc net的支援,只能在windows下執行。可以看到上方是控制按鈕,通過對應的按鈕可以控制 效果,控制功能還是很全面的,比如聲音 漸弱 漸強 回音 通道混合 均衡器 去除某個音軌。我隨便找了乙個 改變了一...
乙個封裝的C Socket類
乙個封裝的c socket類 2011年06月03日 include stdafx.h include libyfun.h include mytcp.h include ty server.h 建構函式 myctcp myctcp 析構函式 myctcp myctcp 賦值 入參 nsockfd ...
封裝乙個表單驗證類
封裝乙個表單驗證類 中文驗證 郵箱驗證 號碼 手機 qq 身份證 由字母 數字 下劃線組成,不能以數字開頭 header content type text html charset utf 8 class form x u return preg match reg,str 郵箱驗證 引數 ema...