python itsdangerous模块的具体使用方法
itsdangerous简介
有时您只想将一些数据发送到不受信任的环境。但是如何安全地做到这一点?诀窍就是签名。只要知道一个密钥,您就可以对数据进行加密签名并将其移交给其他人。当您取回数据时,可以轻松确保没有人篡改数据。使用itsdangerous可以实现此种方案。
安装
pipinstallitsdangerous
使用实例一
importitsdangerous 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} #当超时或值有误则会报错
使用实例二
importitsdangerous 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} #当超时或值有误则会报错
使用实例三
fromitsdangerousimportTimedJSONWebSignatureSerializerasSerializer 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签名模块。它也支持JSONWeb签名(JWS)。这个库采用BSD协议,由ArminRonacher编写,而大部分设计与实现的版权归SimonWillison和其他的把这个库变为现实的Django爱好者们。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。