python itsdangerous模塊的具體使用方法
itsdangerous 簡(jiǎn)介
有時(shí)您只想將一些數(shù)據(jù)發(fā)送到不受信任的環(huán)境。但是如何安全地做到這一點(diǎn)?訣竅就是簽名。只要知道一個(gè)密鑰,您就可以對(duì)數(shù)據(jù)進(jìn)行加密簽名并將其移交給其他人。當(dāng)您取回?cái)?shù)據(jù)時(shí),可以輕松確保沒有人篡改數(shù)據(jù)。使用itsdangerous可以實(shí)現(xiàn)此種方案。
安裝
pip install itsdangerous
使用實(shí)例一
import itsdangerous
salt='sdaf'#加鹽
t=itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=600)#過期時(shí)間600秒
info = {'username':'baihe','user_id':1}
# =========加密token============
res=t.dumps(info)
token=res.decode()#指定編碼格式
print(token)
# eyJleHAiOjE1NzUwMDczNjgsImlhdCI6MTU3NTAwNjc2OCwiYWxnIjoiSFM1MTIifQ.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InlhbmdmYW4ifQ.yUb3PW53V89ZX4Ci2qeaBJIiizt0JUAN_W9BBzg8QkIR1-uO7NQl6jizSUReOFGanWzfG19t7XFHCWv1JGMIZw
# =========解密token============
res = t.loads('eyJhbGciOiJIUzUxMiIsImV4cCI6MTU3NTAwNzM0MywiaWF0IjoxNTc1MDA2NzQzfQ.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InlhbmdmYW4ifQ.k-Q1VyN2TOlQ4flHHoiOYEMRaUEiN5Ms2JgeRdnCZWbQB-WwQ1FScoBWxFGkCYEPoWVpAjQxDBQeBesmulZupQ')
# res = t.loads(token)
print(res)
# {'username': 'baihe', 'user_id': 1}
# 當(dāng)超時(shí)或值有誤則會(huì)報(bào)錯(cuò)
使用實(shí)例二
import itsdangerous
salt='sdaf'#加鹽
t=itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=600)#過期時(shí)間600秒
info = {'username':'baihe','user_id':1}
# =========加密token============
res=t.dumps(info)
token=res.decode()#指定編碼格式
print(token)
# eyJhbGciOiJIUzUxMiIsImlhdCI6MTU0MTgxOTcyMCwiZXhwIjoxNTQxODIwMzIwfQ.eyJ1c2VybmFtZSI6InlhbmdmYW4iLCJ1c2VyX2lkIjoxfQ.VjCgry9Sr-4iRsK_MHYThcn_O7js9BERrXzocc7BI1aavC3N3s3e0wWMsvq2-Qp-ol_WNMD23wxiYRrA1kwCbg
# =========解密token============
res = t.loads(token)
print(res)
# {'username': 'baihe', 'user_id': 1}
# 當(dāng)超時(shí)或值有誤則會(huì)報(bào)錯(cuò)
使用實(shí)例三
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
salt='abcdefg' # 這里就是配置加密的規(guī)則
serializer=Serializer(salt,expires_in=3600) # 過期時(shí)間一小時(shí),
info = {'confirm':1}
# 加密階段
res=serializer.dumps(info)# 得到加密后的數(shù)據(jù),會(huì)返回一個(gè)字節(jié)類型的數(shù)據(jù)
token=res.decode() # 解碼為str
print(token)
# 得到的數(shù)據(jù)如下,就是包含數(shù)據(jù)和鹽值的token了,只有在知道鹽值的時(shí)候才能被解密出來
#eyJhbGciOiJIUzUxMiIsImlhdCI6MTU2MjY0Nzg4NCwiZXhwIjoxNTYyNjUxNDg0fQ.eyJjb25maXJtIjo1fQ.93DtXu9vHQDW0lr7saJhDBt-dcBxNNh_IMTR-JhWnrT-ujQ9SwevSUyW0p2txLS-gtyRHPlH1eD9INksIWilkA
# 解密階段
res=serializer.loads(token)
print(res)
# 返回的數(shù)據(jù)如下:
# {'confirm':1}
特殊說明
誠然,接收者可以破譯內(nèi)容,來看看你的包裹里有什么,但他們沒辦法修改你的內(nèi)容,除非他們也有你的密鑰。所以只要你保管好你的密鑰,并且密鑰足夠復(fù)雜,一切就OK了。
itsdangerous內(nèi)部默認(rèn)使用了HMAC和SHA1來簽名,基于 Django 簽名模塊。它也支持JSON Web 簽名 (JWS)。這個(gè)庫采用BSD協(xié)議,由Armin Ronacher編寫,而大部分設(shè)計(jì)與實(shí)現(xiàn)的版權(quán)歸Simon Willison和其他的把這個(gè)庫變?yōu)楝F(xiàn)實(shí)的Django愛好者們。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python實(shí)現(xiàn)視頻轉(zhuǎn)音頻與音頻轉(zhuǎn)文本
這篇文章主要為大家詳細(xì)介紹了使用Python實(shí)現(xiàn)視頻轉(zhuǎn)音頻與音頻轉(zhuǎn)文本的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考一下2024-02-02
Python Django中的STATIC_URL 設(shè)置和使用方式
這篇文章主要介紹了Python Django中的STATIC_URL 設(shè)置和使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
深入解析Python中的descriptor描述器的作用及用法
在Python中描述器也被稱為描述符,描述器能夠?qū)崿F(xiàn)對(duì)對(duì)象屬性的訪問控制,下面我們就來深入解析Python中的descriptor描述器的作用及用法2016-06-06
python TinyDB輕量級(jí)文檔導(dǎo)向數(shù)據(jù)庫輕松存儲(chǔ)訪問
這篇文章主要為大家介紹了python TinyDB輕量級(jí)文檔導(dǎo)向數(shù)據(jù)庫輕松存儲(chǔ)訪問數(shù)據(jù)使用探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Python編程中實(shí)現(xiàn)迭代器的一些技巧小結(jié)
只談迭代器的話在Python中只是一個(gè)泛指的概念,具體的可以用yield、生成器表達(dá)式、iter等多種方式來構(gòu)建,這里我們整理了Python編程中實(shí)現(xiàn)迭代器的一些技巧小結(jié):2016-06-06
pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解
這篇文章主要為大家介紹了pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
python單線程文件傳輸?shù)膶?shí)例(C/S)
今天小編就為大家分享一篇python單線程文件傳輸?shù)膶?shí)例(C/S),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02

