首页 > 编程语言 >Python通过Jwt创建Token

Python通过Jwt创建Token

时间:2022-12-22 14:57:33浏览次数:36  
标签:info encrypt key Python Jwt Token exp time CONFIG

import time
import jwt   # pip install PyJWT
import hashlib
import json
import base64
from pyDes import des, PAD_PKCS5, CBC

SECRET_KEY = 'django-insecure-fr&716j=9#6e=osxcu5-v&v1%1(kc-(_dz5cp4b(una^^lkoo0'
JWT_CONFIG = {
    "key": "slookup",
    "iss": "han",
    "aud": "han",
    "exp": 3600 * 8,
    "algorithm": 'HS256',
}
DES_CONFIG = {
    "des_key": "_361Du$Z",  # Key
    "des_iv": [1, 2, 3, 4, 5, 6, 7, 8]  # 自定IV向量
}


def des_encrypt(data, key=DES_CONFIG["des_key"]):
    """
    加密密码
    :param data:
    :return:
    """
    k = des(key, CBC, DES_CONFIG["des_iv"], pad=None, padmode=PAD_PKCS5)
    encrypt_str = k.encrypt(json.dumps(data))
    return base64.b64encode(encrypt_str).decode("utf-8")


def md5_encrypt(md5_key, salt=None):
    if isinstance(md5_key, str):
        md5_key = md5_key.encode()
    m = hashlib.md5(md5_key)
    if salt is not None:
        m.update(salt.encode())
    data = m.hexdigest()
    return data


def jwt_encrypt(info, exp=None):
    info["iat"] = int(time.time())
    if exp is None:
        info["exp"] = int(time.time()) + JWT_CONFIG["exp"]
    else:
        info["exp"] = exp
    payload_key = md5_encrypt(json.dumps(info), SECRET_KEY)
    info["payload_key"] = payload_key
    payload = {
        'key': JWT_CONFIG["key"],
        'iss': JWT_CONFIG["iss"],
        'aud': JWT_CONFIG["aud"],
        'iat': int(time.time()),
        # 'data': info,
        # 'data': des_encrypt(json.dumps(info)),
        'data': des_encrypt(info),
        'exp': int(time.time()) + JWT_CONFIG["exp"],
    }

    jwt_token = jwt.encode(payload, JWT_CONFIG["key"], algorithm=JWT_CONFIG["algorithm"])

    return jwt_token


if __name__ == '__main__':
    exp = int(time.time()) - 60 * 5
    info = {
        "user_id": 22132,
        "exp": exp
    }
    print(jwt_encrypt(info, exp=exp))

 

标签:info,encrypt,key,Python,Jwt,Token,exp,time,CONFIG
From: https://www.cnblogs.com/SlookUp/p/16998710.html

相关文章

  • ArcGIS Python 修改面的左上角为第一个点
    面的节点夹角大于30并且小于150,距离外界矩形左上角最近的点为第一个点,对于多部件每一个都修改,修改面的开始点位置,运行界面如图14-10所示。  #coding=utf8impor......
  • 教你用Python实现BMI计算器
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!<br/>我们来用Python相关知识,做一个BMI计算器的案例。你可以通过控制台的提示信息,输入身高和体重,注意单......
  • python 虚拟环境搭建全流程
    首先,建立python虚拟环境test_env:python3-mvenvtest_env#激活虚拟环境source./test_env/bin/activate#linuxvenv/Scripts/activate#windows#停止虚拟环......
  • 37python的创建虚拟环境和项目
    如需打包所运行的第三方库版本命令如下:pipfreeze>requirements.txt构建虚拟环境个人习惯加点(表示隐藏)安装其它库出现此错误解决方法一:管理员的方式打开......
  • Python__10--函数结构之循环结构与嵌套结构
    1循环结构循环结构有一个循环体,循环体是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。range函数range函数一般配合for循环使用range......
  • python获取当前项目的根目录路径
    def__init__(self):self.object_name='UIAutoProject'defget_root_path(self):cur_path=os.getcwd()returncur_path[:cur_path.fin......
  • python之图片与视频互转
    图片转视频defimage_to_video(image_dir,video_dir,fps):im_list=[iforiinos.listdir(image_dir)ifi.endswith('jpg')]im_list.sort(key=lambdax:......
  • python之调用高德、百度api解析经纬度地址
    调用高德#高德地图根据经纬度反查地址,每天只能调用5000次defgaode_excute_single_query(coordStrings,currentkey='你自己的api-key'):#1-将coordList中的经纬......
  • python实现计算精度、召回率和F1值
    python实现计算精度、召回率和F1值  摘要:在深度学习的分类任务中,对模型的评估或测试时需要计算其在验证集或测试集上的预测精度(prediction/accuracy)、召回率(recall)和F1值......
  • 关于python网络爬虫——摘取新闻标题及链接
    Python是最近流行的编程语言,最近学习了python编程,并在网络爬虫方面进行了研究,下面给出简单实例来实现网络信息的获取步骤一:要有python开发环境,可下载python3.5版本,或anacond......