首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python-jose:加密解密高手的 Python 库!

想给数据加个密?打造一个安全的接口?python-jose 这个库简直就是你的贴心小棉袋!说起来它在加密解密这块玩得可溜了,支持 JWT(JSON Web Tokens)、JWS(JSON Web Signatures)和 JWE(JSON Web Encryption)这些高大上的加密标准,用起来贼方便。

1.

安装这玩意儿

装这个库超简单,一行命令搞定:

pip install python-jose

不过要是想用 RSA 加密,还得多装个包:

pip install python-jose[cryptography]

2.

JWT 整起来!

JWT 就像是给数据打包加了个电子锁,看着像一串乱码,其实里边儿藏着咱们的数据呢:

from jose import jwt

# 随便整个密钥

secret_key = “我是一个没人猜得到的密钥”

# 要加密的数据

data = {

“user_id”: 123,

“role”: “admin”,

“exp”: 1635000000  # 这是过期时间

}

# 加密!

token = jwt.encode(data, secret_key, algorithm=“HS256”)

print(f“加密后的token:{token}”)

# 解密看看

decoded = jwt.decode(token, secret_key, algorithms=[“HS256”])

print(f“解密后的数据:{decoded}”)

温馨提示:千万别把那个 secret_key 写死在代码里,最好放在环境变量或配置文件中!

3.

JWS 也来玩玩

JWS 就是给数据打个数字签名,确保数据没被人篡改:

from jose import jws

# 签名

signed = jws.sign({“msg”: “这是原始数据”}, “密钥”, algorithm=“HS256”)

print(f“签名后的数据:{signed}”)

# 验证签名

verified = jws.verify(signed, “密钥”, algorithms=[“HS256”])

print(f“验证后的数据:{verified}”)

4.

RSA 加密解密

RSA 是非对称加密,跟咱们平常用的对称加密不太一样。它有两把钥匙,一个公钥一个私钥:

from jose import jwt

# 生成密钥对

private_key = rsa.generate_private_key(

public_exponent=65537,

key_size=2048

)

public_key = private_key.public_key()

# 把私钥转成PEM格式

pem_private = private_key.private_bytes(

encoding=serialization.Encoding.PEM,

format=serialization.PrivateFormat.PKCS8,

encryption_algorithm=serialization.NoEncryption()

)

# 把公钥也转成PEM格式

pem_public = public_key.public_bytes(

encoding=serialization.Encoding.PEM,

format=serialization.PublicFormat.SubjectPublicKeyInfo

)

# 用RSA加密JWT

token = jwt.encode(

{“data”: “机密内容”},

pem_private,

algorithm=“RS256”

)

# 用公钥解密

data = jwt.decode(

token,

pem_public,

)

温馨提示:用 RSA 的时候记得保管好私钥,丢了就凉凉了!

5.

常见坑点

咱写代码难免会遇到一些坑,提前知道总没坏处:

记得处理异常,别让程序崩了:

from jose.exceptions import JWTError

try:

except JWTError:

print(“解密失败啦,token可能有问题”)

token 过期时间别设太长,容易出安全问题

密钥要够复杂,别整个 “123456” 就完事了

python-jose 这个库其实挺好用的,加密解密不费劲,安全性也有保证。要是你要做 API 认证啥的,它绝对能帮上忙。平时写代码记得把安全性放在第一位,毕竟谁也不想自己的数据被人偷走对吧!

代码写多了就发现,这些加密解密的活儿都是套路,掌握了这些基础的用法,以后再遇到类似需求分分钟就能搞定。要是觉得这些代码不够过瘾,建议去翻翻官方文档,里边儿还有更多高级玩法等着你去探索呢!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OPUFiDQf4SeGlf8uHfYsmxHA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券