当前位置: 首页 > wzjs >正文

北京市建设工程交易网培训优化

北京市建设工程交易网,培训优化,二手商品网站制作,wordpress 4.7.2 更新这是我这两天的思考 早知道密码学的课就不旷那么多了 纯个人见解 如需转载,标记出处 目录 一、官网介绍 二、事例代码 源码分析: 加密函数dump源码使用的函数如下: 解密 二、itsdangerousBUG汇总 1.ImportError: cannot import name ‘…

这是我这两天的思考

早知道密码学的课就不旷那么多了

纯个人见解

如需转载,标记出处

目录

一、官网介绍

二、事例代码

源码分析:

加密函数dump源码使用的函数如下:

解密

二、itsdangerousBUG汇总

1.ImportError: cannot import name ‘TimedJSONWebSignatureSerializer‘ from ‘itsdangerous‘ 

原因:

解决方法一:降级 itsdangerous 到 1.1.0(我自己用的这个)

解决方法二:使用 URLSafeTimedSerializer 替代


一、官网介绍

ItsDangerous — ItsDangerous Documentation (2.2.x)

有时,你需要将一些数据发送到不受信任的环境,再将其取回。为了安全,必须对数据进行签名以检测更改。

有了只有你知道的密钥,你就可以对数据进行加密签名并将其交给其他人。取回数据时,可以确保没有人篡改它。

接收方可以看到数据,但除非他们也有你的密钥,否则无法改数据。

必须将密钥保密且复杂

安装
pip install -U itsdangerous

二、事例代码

只截取部分分析代码

1.加解密工具

#加密
def generic_openid(openid):s = Serializer(secret_key=settings.SECRET_KEY, expires_in=3600)access_token = s.dumps({'openid': openid})# 将bytes类型的数据转换为 strreturn access_token.decode()# 解密
def check_access_token(token):s = Serializer(secret_key=settings.SECRET_KEY, expires_in=3600)try:result=s.loads(token)except Exception:return Noneelse:return result.get('openid')

2.功能(判断用户是否绑定,如果没有绑定,hash加密openid生成token给前端,前端收集用户填写的信息,传输时把用户信息+token一起传递给后端

#根据openid进行查询判断用户是否已经绑定try:qquser = OAuthQQUser.objects.get(openid=openid)except OAuthQQUser.DoesNotExist:# 不存在# 5. 如果没有绑定过,则需要绑定access_token = makeToken(openid,3600)#前端拿着这个凭证去进行绑定response = JsonResponse({'code': 400, 'access_token': access_token})return responseelse:# 存在#如果绑定过,则直接登录

我认为这里的token是一个hash算法生成的签名+原数据的拼接,它在前端解不开,只能在我的后端解开,这个功能就是为了给前端一个通行证,你可以把自己的用户信息比如邮箱绑定发给我,我后端根据返回来的token来验证是否这个绑定是我想给的用户本人。全程只使用一个密钥加解密,也就是对称加密

源码分析:

加密函数dump源码使用的函数如下:

dump做了两个主要工作,创建头部,生成签名

他在头部里放了这个签名有了什么算法(这里用的是默认算法,HS512)

make_signer 函数生成一个签名者对象(signer)。根据当前的 secret_key以及其他salt、algorithm来返回一个用于签名的实例

对传入的数据进行签名,返回拼接了签名的数据字符串(原始数据 + 分隔符 + 签名)

want_bytes格式化字符串,将其编码成字节

解密

这里先使用make_signer()函数获取验签用的算法

重点是这个unsign函数

它对签名过的数据进行验签,返回原始数据

signed_value: 已签名的数据= 原始数据 + 分隔符 + 签名

先判断签名格式。如果签名被篡改(格式不对),捕获异常并返回 False

将拆分下来的数据openid生成新的签名,将原先的签名和新的作比较看是都相同

二、itsdangerousBUG汇总

1.ImportError: cannot import name ‘TimedJSONWebSignatureSerializer‘ from ‘itsdangerous‘ 

之前都正常导入

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer

今天importerror

原因:

itsdangerous 库在高版本中已经移除了 TimedJSONWebSignatureSerializer,所以导致导入失败。

TimedJSONWebSignatureSerializer 是 itsdangerous 早期版本的 API,用来生成带有效期的 token。从 itsdangerous 2.0 开始,这个类被 移除或不推荐使用,官方推荐使用其他方式生成/验证 token(如 URLSafeTimedSerializer)。

解决办法:

解决方法一:降级 itsdangerous 到 1.1.0(我自己用的这个)

降级 itsdangerous:

pip install itsdangerous==1.1.0

解决方法二:使用 URLSafeTimedSerializer 替代

如果不想降级,改用推荐的新写法:


from itsdangerous import URLSafeTimedSerializer 
# 初始化 
serializer = URLSafeTimedSerializer(secret_key='your-secret-key') 
# 生成 
token token = serializer.dumps({'user_id': 123}) 
# 验证 
token try: data = serializer.loads(token, max_age=3600) 
# 3600秒有效期 
print(data) 
except Exception as e: 
print('Token 验证失败:', e)

http://www.dtcms.com/wzjs/250090.html

相关文章:

  • 阜阳哪里有做网站的舆情优化公司
  • 微软网站做u盘启动教程深圳全网推广平台
  • 多品牌网站建设百度高级搜索页面的网址
  • 网站开发私单哪里接百度一下子就知道了
  • 电脑用虚拟机做网站网站推广的基本方法是
  • 网站开发的基本条件百度广告联盟官网
  • 企业网站建设哪家服务好 百度一下
  • 做网站的常识数据分析网页
  • 国有资产处网站建设国际新闻稿件
  • 建设网站以后怎么让百度收录呢电子商务营销
  • 宁波网站推广排名大数据分析培训机构
  • 新加坡网站大全百度网址ip
  • 做营养的网站营销网站制作公司
  • 莱芜都市网官网优速网站建设优化seo
  • 微网站怎么制作近期出现的病毒叫什么
  • 云南网站建设c3sales文案写作软件app
  • wordpress搭建教程关键词seo排名优化如何
  • 不懂技术与产品怎样做网站教育培训机构管理系统
  • 网站建设服务费怎么写分录谷歌广告投放步骤
  • 网页与网站设计什么是抖动磁力搜索
  • 做电影网站的服务器需要多大app推广拉新
  • 备案期间怎么做网站简单的html网页制作
  • 内蒙古 网站建设seo综合查询是什么
  • 泉州做网站排名网络游戏推广员的真实经历
  • 独立网店系统哪个好seo引擎搜索入口
  • 如果给公司网站做网络广告hao123网址之家官网
  • 企业网站的类型有哪些企业管理培训课程报名
  • 垂直网站建设方案书免费建站的平台
  • 淮安做微信网站西安网站公司推广
  • 中国疫情最新消息今天站群优化公司