最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PYTHON實(shí)現(xiàn)SIGN簽名的過(guò)程解析

 更新時(shí)間:2019年10月28日 08:31:31   作者:圓覺(jué)  
這篇文章主要介紹了PYTHON實(shí)現(xiàn)SIGN簽名的過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

sign簽名是用于提供給外部(第三方)調(diào)用的接口,調(diào)用方需要提供正確的appkey鑰匙才能調(diào)用,確保了接口的安全性。

簽名參數(shù)sign生成方法:

假設(shè)有請(qǐng)求參數(shù)如下:

appkey = "111222333"
body = {
  "username": "Test",
  "Password": "123456",
  "mail": "",
  "sign": "xxx"
}

第一步:將所有參數(shù)(注意是所有參數(shù)),除去sign本身,以及值為空的參數(shù),轉(zhuǎn)化為鍵值對(duì),沒(méi)有等于號(hào)的字符串。

期望的結(jié)果如下:

["usernameTest","Password123456"]

代碼實(shí)現(xiàn)2種方式:

1:for循環(huán)實(shí)現(xiàn):

list = []
for i in body.items():
  if i[1] != "" and i[0] != "sign":
    list.append("".join(i))
print(list)

2:列表生成式實(shí)現(xiàn):

s = ["".join(i) for i in body.items() if i[1] != "" and i[0] != "sign"]
print(s)

2種方式打印出來(lái)的實(shí)際結(jié)果如下:

第二步:排序后的參數(shù)按照參數(shù)1值1,參數(shù)2值2的鍵值對(duì)順序拼接成一個(gè)字符串,按參數(shù)名字母順序升序排序。(具體升降順序得問(wèn)開(kāi)發(fā),一般為升序)

期望的結(jié)果如下:(按字母順序:Password開(kāi)頭的在username前面)

“Password123456usernameTest”

代碼實(shí)現(xiàn):

# TODO 按字母升序排序
sort = "".join(sorted(list))
print(sort)

實(shí)際結(jié)果:

第三步:在前面得到的字符串后面,加上接入方驗(yàn)證密匙appkey。

期望結(jié)果:

Password123456usernameTest111222333

代碼實(shí)現(xiàn):

# todo 3:在第二步得到的字符串后面,加上接入方驗(yàn)證密匙key,然后計(jì)算md5值,
result = sort+appkey
print(result)

實(shí)際結(jié)果:

第四步:然后將這個(gè)字符串換為小寫進(jìn)行md5加密計(jì)算,得到的這個(gè)值即為sign簽名值。

注意,計(jì)算md5之前請(qǐng)確保接口與接入方的字符串編碼一致,如統(tǒng)一使用utf-8編碼或者GBK編碼,如果編碼方式不一致則計(jì)算出來(lái)的簽名會(huì)校驗(yàn)失敗。

代碼實(shí)現(xiàn):

# todo MD5加密,固定的寫法
def jiami(params):
  m = hashlib.md5()
  m.update(params.encode("utf-8"))
  return m.hexdigest()

sign = jiami(result.lower())  #lower()把字符轉(zhuǎn)為小寫
print(sign)

實(shí)際結(jié)果:

全部過(guò)程如下:

'''sign簽名主要是用于提供給外部(第三方)調(diào)用的接口,需要提供appkey鑰匙才能調(diào)用'''
import hashlib


appkey = "111222333"
body = {
  "username": "Test",
  "Password": "123456",
  "mail": "",
  "sign": "xxx"
}
# todo 第1步: 將所有參數(shù)(注意是所有參數(shù)),除去sign本身,以及值是空的參數(shù),轉(zhuǎn)化為鍵值對(duì)的

#s = ["".join(i) for i in body.items() if i[1] != "" and i[0] != "sign"]
#print(s)

list = []
for i in body.items():
  if i[1] != "" and i[0] != "sign":
    list.append("".join(i))
print(list)


# todo 2:排序后的參數(shù)按照參數(shù)1值1,參數(shù)2值2的鍵值對(duì)順序拼接成一個(gè)字符串,按參數(shù)名字母升序排序
# TODO 按字母升序排序
sort = "".join(sorted(list))
print(sort)

# todo 3:在第二步得到的字符串后面,加上接入方驗(yàn)證密匙key,然后計(jì)算md5值,
result = sort+appkey
print(result)

# todo MD5加密,固定的寫法
def jiami(params):
  m = hashlib.md5()
  m.update(params.encode("utf-8"))
  return m.hexdigest()

sign = jiami(result.lower())  #lower()把字符轉(zhuǎn)為小寫
print(sign)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用python連接Linux服務(wù)器發(fā)送指定命令的示例代碼

    使用python連接Linux服務(wù)器發(fā)送指定命令的示例代碼

    這篇文章主要介紹了使用python連接Linux服務(wù)器發(fā)送指定命令,首先安裝paramiko庫(kù),使用paramiko庫(kù)連接linux,使用paramiko庫(kù)上傳下載文件,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • PyCharm2021最新激活碼+激活碼補(bǔ)丁(親測(cè)最新版PyCharm2021.3激活成功)

    PyCharm2021最新激活碼+激活碼補(bǔ)丁(親測(cè)最新版PyCharm2021.3激活成功)

    這篇文章主要介紹了PyCharm2021最新激活碼+激活碼補(bǔ)丁,親測(cè)最新版PyCharm2021.3激活成功,PyCharm2020激活成功
    2020-09-09
  • Python數(shù)據(jù)可視化圖實(shí)現(xiàn)過(guò)程詳解

    Python數(shù)據(jù)可視化圖實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要介紹了Python數(shù)據(jù)可視化圖實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • pandas combine_first函數(shù)處理兩個(gè)數(shù)據(jù)集重疊和缺失

    pandas combine_first函數(shù)處理兩個(gè)數(shù)據(jù)集重疊和缺失

    combine_first是pandas中的一個(gè)函數(shù),它可以將兩個(gè)DataFrame對(duì)象按照索引進(jìn)行合并,用一個(gè)對(duì)象中的非空值填充另一個(gè)對(duì)象中的空值,這個(gè)函數(shù)非常適合處理兩個(gè)數(shù)據(jù)集有部分重疊和缺失的情況,可以實(shí)現(xiàn)數(shù)據(jù)的補(bǔ)全和更新,本文介紹combine_first函數(shù)的語(yǔ)法及一些案例應(yīng)用
    2024-01-01
  • pyqt5蒙版遮罩mask,setmask的使用

    pyqt5蒙版遮罩mask,setmask的使用

    mask()和setmask()一般是在pyqt繪圖時(shí)常見(jiàn),本文就來(lái)介紹一下pyqt5蒙版遮罩mask,setmask的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-06-06
  • pytorch 中pad函數(shù)toch.nn.functional.pad()的用法

    pytorch 中pad函數(shù)toch.nn.functional.pad()的用法

    今天小編就為大家分享一篇pytorch 中pad函數(shù)toch.nn.functional.pad()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python中實(shí)現(xiàn)WebSocket的示例詳解

    Python中實(shí)現(xiàn)WebSocket的示例詳解

    WebSocket 是一種計(jì)算機(jī)通信協(xié)議,它為客戶端和服務(wù)器之間的雙向通信提供了一個(gè)全雙工的通道,本篇文章將詳解 Python 中如何實(shí)現(xiàn) WebSocket,感興趣的可以了解下
    2025-03-03
  • python畫圖時(shí)設(shè)置分辨率和畫布大小的實(shí)現(xiàn)(plt.figure())

    python畫圖時(shí)設(shè)置分辨率和畫布大小的實(shí)現(xiàn)(plt.figure())

    這篇文章主要介紹了python畫圖時(shí)設(shè)置分辨率和畫布大小的實(shí)現(xiàn)(plt.figure()),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • centos系統(tǒng)升級(jí)python 2.7.3

    centos系統(tǒng)升級(jí)python 2.7.3

    CentOS上安裝的python版本是2.6,不能滿足我運(yùn)行軟件的要求,所以對(duì)python進(jìn)行升級(jí)。Python的最新版本已經(jīng)是3.3,但是Python3的兼容性可能還有一定的問(wèn)題,所以還是升級(jí)到2.7較為保險(xiǎn)。
    2014-07-07
  • pytorch Variable與Tensor合并后 requires_grad()默認(rèn)與修改方式

    pytorch Variable與Tensor合并后 requires_grad()默認(rèn)與修改方式

    這篇文章主要介紹了pytorch Variable與Tensor合并后 requires_grad()默認(rèn)與修改方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05

最新評(píng)論

南投市| 绥化市| 班玛县| 永城市| 宿松县| 江北区| 宣恩县| 普宁市| 颍上县| 江华| 镇巴县| 河北省| 随州市| 平塘县| 新邵县| 隆林| 华坪县| 浮梁县| 邵阳县| 天全县| 内江市| 报价| 平安县| 枣阳市| 独山县| 水富县| 赫章县| 绥德县| 杭锦旗| 保山市| 浦县| 香河县| 龙胜| 渝中区| 阿拉尔市| 雅安市| 深州市| 锦屏县| 永安市| 衢州市| 宝兴县|