PyJWT,一个Python认证加密的智能库!

文摘   2024-11-15 07:10   河南  

嘿,伙计们!今儿咱聊聊 PyJWT 这玩意儿,一个 Python 里专门搞认证加密的库,贼拉好用!想想看,在网络世界里飞来飞去的用户信息,要是没加密,那不跟裸奔似的吗?PyJWT 就是给这些信息穿上“黄金甲”的工具,保证你的数据安全!

JWT 是啥?

JWT,全称 JSON Web Token,简单来说就是一种规范,一种用 JSON 格式来传递信息的规范。它就像个小包裹,里面装着用户的信息,比如用户名、权限啥的。这小包裹还有个神奇的“封条”,也就是数字签名,保证里面的东西没被篡改过。

PyJWT 怎么用?

PyJWT 这玩意儿用起来贼简单!你得装上它:
    pip install pyjwt

装好了,咱就开始玩代码!

    import jwt
    
    #  这儿是你的“密钥”,得藏好了,别让人偷窥了!
    secret_key = “your-256-bit-secret”
    
    #  把用户信息打包成 payload,就像往包裹里塞东西
    payload = {
        “user_id”:123,
        “username”: “老王”,
        “is_admin”:True  #  老王是管理员!
    }
    
    #  用 jwt.encode 生成 JWT 字符串,相当于给包裹贴上“封条”
    encoded_jwt = jwt.encode(payload, secret_key, algorithm=“HS256”)
    
    print(encoded_jwt)

这段代码干了啥?它把老王的信息打包,然后用你的密钥加密,最后生成一个字符串,这就是 JWT!

解密 JWT

生成 JWT 后,咋解密呢?看代码:
    import jwt
    
    secret_key = “your-256-bit-secret”
    encoded_jwt = “eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxMjMsInVzZXJuYW1lIjoi5a6L5465IiwiaXNfYWRtaW4iOnRydWV9.IM9SCcY03jFlh5oXDzMr2y2oSQ6cV2ooe8r0lXKE9k4”
    
    
    try:
        decoded_payload = jwt.decode(encoded_jwt, secret_key, algorithms=[“HS256”])
        print(decoded_payload)
    except jwt.ExpiredSignatureError:
        print(“JWT 过期了!”)
    except jwt.InvalidTokenError:
        print(“JWT 不合法!”)

温馨提示:解密的时候,算法得跟加密的时候一样,不然会报错!

过期时间

JWT 可以设置过期时间,就像酸奶一样,过期了就不能用了。
    import jwt
    import datetime
    
    secret_key = “your-256-bit-secret”
    
    payload = {
        “user_id”:123,
        “exp”:datetime.datetime.utcnow() + datetime.timedelta(minutes=30)  #  30 分钟后过期
    }
    
    encoded_jwt = jwt.encode(payload, secret_key, algorithm=“HS256”)
    
    print(encoded_jwt)

实际应用

这 PyJWT 能干啥?可多了!比如用户登录,你不用把用户信息存在数据库里,直接生成个 JWT 给客户端,下次客户端请求的时候带着 JWT 就行,服务器一验就知道是谁了。

不同算法

PyJWT 支持好几种算法,比如 HS256、RS256 等等。HS256 用的是对称加密,也就是加密解密用同一个密钥;RS256 用的是非对称加密,加密用私钥,解密用公钥。

PyJWT 这玩意儿,用起来简单,功能强大,赶紧试试吧!搞懂了它,你的 Python 项目立马安全感爆棚!

翔宇风
精彩纷呈,引人入胜。
 最新文章