Jason Web Encryption (JWE)的解密

在Web应用的鉴权和授权当中,经常都会碰到JWT, JWE形式的Token。JWT可以很方便的在jwt.io之类的网站中解码,查看token的信息。但是对于JWE,因为Token保存的信息是加密后的,不能直接解码,需要进行解密。以下是如何用Python进行解密的方法。

首先我们需要安装一个库,pip install jwcrypto

JWE是由5部分组成,每个部分之间以.号分隔。第一部分是没有加密的,只是进行了BASE64的编码,我们解码之后可以看到这个JWE的加密方式。例如我拿到的JWE的第一部分是eyJ6aXAiOiJERUYiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0,可以通过以下命令进行解码:

echo 'eyJ6aXAiOiJERUYiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0'|base64 --decode

解码后的输出如下:

{"zip":"DEF","enc":"A256GCM","alg":"dir"}

其中enc字段表示加密的算法,alg表示加密的方式,dir表示这个内容是用对称密钥直接加密的。我们可以构建一个密钥来进行解码:

keyjson = {"kty":"oct","alg":"A256GCM", "k":"XXXXXX"}
keyjsonstr = json.dumps(keyjson)
key = jwk.JWK.from_json(keyjsonstr)

这里面在keyjson的alg表示加密算法,kty表示key的类型,k是Key的value,需要以BASE64进行编码。

之后我们就可以构建一个JWEtoken对象,传入JWEtoken的内容和Key进行加密了:

jwetoken = jwe.JWE()
encrypted = "XXXXXX"   #Jwe token content
jwetoken.deserialize(encrypted, key)

解密之后我们就可以通过jwetoken.payload来查看token的内容了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gzroy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值