itsdangerous 簡介
有時您只想將一些數據發送到不受信任的環境。但是如何安全地做到這一點?訣竅就是簽名。只要知道一個密鑰,您就可以對數據進行加密簽名并將其移交給其他人。當您取回數據時,可以輕松確保沒有人篡改數據。使用itsdangerous可以實現此種方案。
安裝
pip install itsdangerous
使用實例一
import itsdangerous
salt='sdaf'#加鹽
t=itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=600)#過期時間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}
# 當超時或值有誤則會報錯
使用實例二
import itsdangerous
salt='sdaf'#加鹽
t=itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=600)#過期時間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}
# 當超時或值有誤則會報錯
使用實例三
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
salt='abcdefg' # 這里就是配置加密的規則
serializer=Serializer(salt,expires_in=3600) # 過期時間一小時,
info = {'confirm':1}
# 加密階段
res=serializer.dumps(info)# 得到加密后的數據,會返回一個字節類型的數據
token=res.decode() # 解碼為str
print(token)
# 得到的數據如下,就是包含數據和鹽值的token了,只有在知道鹽值的時候才能被解密出來
#eyJhbGciOiJIUzUxMiIsImlhdCI6MTU2MjY0Nzg4NCwiZXhwIjoxNTYyNjUxNDg0fQ.eyJjb25maXJtIjo1fQ.93DtXu9vHQDW0lr7saJhDBt-dcBxNNh_IMTR-JhWnrT-ujQ9SwevSUyW0p2txLS-gtyRHPlH1eD9INksIWilkA
# 解密階段
res=serializer.loads(token)
print(res)
# 返回的數據如下:
# {'confirm':1}
特殊說明
誠然,接收者可以破譯內容,來看看你的包裹里有什么,但他們沒辦法修改你的內容,除非他們也有你的密鑰。所以只要你保管好你的密鑰,并且密鑰足夠復雜,一切就OK了。
itsdangerous內部默認使用了HMAC和SHA1來簽名,基于 Django 簽名模塊。它也支持JSON Web 簽名 (JWS)。這個庫采用BSD協議,由Armin Ronacher編寫,而大部分設計與實現的版權歸Simon Willison和其他的把這個庫變為現實的Django愛好者們。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。