Python:使用PyJWT实现JSON Web Tokens加密解密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Python:使用PyJWT实现JSON Web Tokens加密解密

科普

JSON Web Token 入门教程

Json Web Token JWT三部分组成:

(1)Header

(2)Payload

(3)Signature

Header.Payload.Signature

Base64URL 算法:

Base64 有三个字符+、/和=,在 URL 里面有特殊含义,

所以要被替换掉:=被省略、+替换成-,/替换成_


代码实现

github:https://github.com/jpadilla/pyjwt/

文档:https://pyjwt.readthedocs.io/en/latest/index.html


安装

pip install PyJWT

复制jwt网站的数据进行加解密测试

https://jwt.io/

代码示例

# -*- coding: utf-8 -*-


import jwt

data = {
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}

# 加密 py3加密后是字节型数据
encoded = jwt.encode(data, 'secret', algorithm='HS256')
print(encoded.decode())
# eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.
# eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
# DzMJlzRbt6kdh1Kbbqv8SA8QsddwfSoM1bqw41tQY2k


print(jwt.decode(encoded, 'secret', algorithms=['HS256']))
# {'sub': '1234567890', 'name': 'John Doe', 'iat': 1516239022}

增加过期时间,Python3代码示例

# -- coding: utf-8 --
import time
from datetime import datetime, timedelta

import jwt


class JwtUtil(object):
def __init__(self, key):
self.key = key

def encode(self, payload, expires=7):
"""
获取token
:param payload: dict
:param expires: 过期时间:天
:return: str
"""

# 使用utc时间
payload['exp'] = datetime.utcnow() + timedelta(days=expires)

return jwt.encode(payload=payload, key=self.key).decode()

def decode(self, token):
"""
验证并解析token
:param token: str
:return: dict
"""

return jwt.decode(jwt=token, key=self.key)


            </div>
目录
相关文章
|
4月前
|
Ubuntu API 开发工具
基于铜锁构建Web在线加密工具库
基于铜锁构建Web在线加密工具库
59 0
|
9月前
|
PHP 数据安全/隐私保护
攻防世界-web2(逆向加密算法)
攻防世界-web2(逆向加密算法)
74 0
|
JSON 算法 数据安全/隐私保护
Python:使用PyJWT实现JSON Web Tokens加密解密
Python:使用PyJWT实现JSON Web Tokens加密解密
80 0
|
数据安全/隐私保护
web作业:凯撒密码之加密
/** @param words String @return String
80 0
|
存储 JSON JavaScript
兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
微软的C#中虽然有RSA算法,但是格式和OpenSSL生成的公钥/私钥文件格式并不兼容。这个也给贯通前后台的RSA加密解密带来了难度。为了兼容OpenSSL生成的公钥/私钥文件格式,贯通javascript和C#的RSA加密解密算法,必须对C#内置的方法进行再度封装。
828 0
兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
|
数据安全/隐私保护
web项目注册时使用邮件激活及MD5密码加密
web项目注册时使用邮件激活及MD5密码加密
182 0
|
JSON 算法 数据安全/隐私保护
Python:使用PyJWT实现JSON Web Tokens加密解密
Python:使用PyJWT实现JSON Web Tokens加密解密
511 0
|
Web App开发 JavaScript 前端开发
Web暴力破解--前端JS表单加密进行爆破
0x01 前言   常见的js实现加密的方式有:md5、base64、shal,写了一个简单的demo作为测试。 0x02 代码 login.html 用户登录 function checkInput() { var password_input = document.
2456 0