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

淄博 网站设计株洲企业seo优化

淄博 网站设计,株洲企业seo优化,深圳品牌内衣展,web前端开发招聘这是我这两天的思考 早知道密码学的课就不旷那么多了 纯个人见解 如需转载,标记出处 目录 一、官网介绍 二、事例代码 源码分析: 加密函数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/273407.html

相关文章:

  • 某些网站dns解析失败seo收费标准多少
  • 柳州企业网站建设it培训机构靠谱吗
  • 怎么提高网站加载速度慢seo优化软件哪个好
  • 网站开发后端用java叫什么做app软件大概多少钱
  • 嘉兴网站建设seo电商网站设计
  • 深圳营销网站建设手游推广代理平台有哪些
  • 注册网站域名用什么好处seo企业站收录
  • mvc做网站用的多不多淘宝怎么优化关键词步骤
  • 南宁营销型网站制作网络舆情
  • 大学建设网站的意义一个免费的网站
  • 给公司做网站销售怎样啦seo短视频入口
  • 网站建设及安全管理企业营销策划论文
  • 多用户商城网站建设二次开发seo综合查询
  • 2017做网站挣钱吗软文推广的好处
  • app下载安装官方免费河北seo基础知识
  • 能通过付费网站看别人空间吗武汉seo首页优化技巧
  • 家装公司网站建设方案b站黄页推广软件
  • 万网虚拟机怎么做两个网站外贸怎么建立自己的网站
  • 在百度搜不到网站上海百度seo网站优化
  • 网站建设栏目结构表百度置顶广告多少钱
  • 五合一网站做优化好用吗网站关键词排名优化工具
  • 怎么查网站有没有做底部导航传统营销方式有哪些
  • 怎么查看网站是用什么系统做的网络营销策划书范文模板
  • WordPress 固定域名seo优化排名怎么做
  • 彩票网站怎么做收银重庆黄埔seo整站优化
  • 饿了么网站怎么做的百度搜索官方网站
  • 手机网站怎么备案百度搜索网址大全
  • 免费网站建设无广告百度网页pc版登录
  • 那个网站可以找人做设计师域名免费注册0元注册
  • 58同城找工作app下载北京seo关键词优化收费