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í),可以輕松確保沒(méi)有人篡改數(shù)據(jù)。使用itsdangerous可以實(shí)現(xiàn)此種方案。
安裝
pip install itsdangerous
使用實(shí)例一
import itsdangerous salt='sdaf'#加鹽 t=itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=600)#過(guò)期時(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)#過(guò)期時(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) # 過(guò)期時(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í)候才能被解密出來(lái) #eyJhbGciOiJIUzUxMiIsImlhdCI6MTU2MjY0Nzg4NCwiZXhwIjoxNTYyNjUxNDg0fQ.eyJjb25maXJtIjo1fQ.93DtXu9vHQDW0lr7saJhDBt-dcBxNNh_IMTR-JhWnrT-ujQ9SwevSUyW0p2txLS-gtyRHPlH1eD9INksIWilkA # 解密階段 res=serializer.loads(token) print(res) # 返回的數(shù)據(jù)如下: # {'confirm':1}
特殊說(shuō)明
誠(chéng)然,接收者可以破譯內(nèi)容,來(lái)看看你的包裹里有什么,但他們沒(méi)辦法修改你的內(nèi)容,除非他們也有你的密鑰。所以只要你保管好你的密鑰,并且密鑰足夠復(fù)雜,一切就OK了。
itsdangerous內(nèi)部默認(rèn)使用了HMAC和SHA1來(lái)簽名,基于 Django 簽名模塊。它也支持JSON Web 簽名 (JWS)。這個(gè)庫(kù)采用BSD協(xié)議,由Armin Ronacher編寫(xiě),而大部分設(shè)計(jì)與實(shí)現(xiàn)的版權(quán)歸Simon Willison和其他的把這個(gè)庫(kù)變?yōu)楝F(xiàn)實(shí)的Django愛(ài)好者們。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python代碼實(shí)現(xiàn)列表分組計(jì)數(shù)
這篇文章主要介紹了Python代碼實(shí)現(xiàn)列表分組計(jì)數(shù),利用Python代碼實(shí)現(xiàn)了使用分組函數(shù)對(duì)列表進(jìn)行分組,并計(jì)算每組的元素個(gè)數(shù)的功能,需要的朋友可以參考一下2021-11-11Python實(shí)現(xiàn)將sqlite數(shù)據(jù)庫(kù)導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法
這篇文章主要介紹了Python實(shí)現(xiàn)將sqlite數(shù)據(jù)庫(kù)導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法,結(jié)合實(shí)例形式分析了Python針對(duì)sqlite數(shù)據(jù)庫(kù)的連接、讀取及使用寫(xiě)操作包(xlwt)生成Excel表的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07Python-Tkinter Text輸入內(nèi)容在界面顯示的實(shí)例
今天小編就為大家分享一篇Python-Tkinter Text輸入內(nèi)容在界面顯示的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07python統(tǒng)計(jì)字符串中指定字符出現(xiàn)次數(shù)的方法
這篇文章主要介紹了python統(tǒng)計(jì)字符串中指定字符出現(xiàn)次數(shù)的方法,涉及Python中count函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04分享11個(gè)Python自動(dòng)化操作Excel的方法
這篇文章主要給大家分享的是11個(gè)Python自動(dòng)化操作Excel的方法,自動(dòng)化辦公,我相信很多人都有強(qiáng)烈的需求,今天我教大家如何利用Python自動(dòng)化操作Excel,需要的朋友可以參考一下2022-02-02使用python實(shí)現(xiàn)3D聚類圖示例代碼
這篇文章主要介紹了使用python實(shí)現(xiàn)3D聚類圖效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08Python調(diào)用Pandas實(shí)現(xiàn)Excel讀取
這篇文章主要為大家介紹了在Python中如何調(diào)用Pandas實(shí)現(xiàn)Excel文件的讀取,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04