首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyJWT加密参数的目的是什么?

PyJWT加密参数的目的是什么?
EN

Stack Overflow用户
提问于 2021-08-30 03:38:14
回答 1查看 151关注 0票数 0

我是刚在网络应用上使用JWT的。我不确定什么信息应该存储在JWT中,但在我的例子中,我保存敏感的用户数据,比如电子邮件和用户名。我希望在我的JWT上安全地获得这个信息。

使用pyjwt模块,我能够成功地创建令牌。下面是我如何使用它的一个例子。

代码语言:javascript
复制
import jwt
from datetime import datetime, timedelta

data = {
    "user": {}, # Here I would fill with my user data.
    "exp": datetime.utcnow() + timedelta(hours=2)
}
jwt.encode(data,"my-super-secret-key", "HS256")

上面的代码返回一个令牌,我认为它是加密的。

代码语言:javascript
复制
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjp7fSwiZXhwIjoxNjMwMzAxMjI4fQ.sF3NeOArV5Mkgz9oemNMA4-RPF-mXKCIkQrlMQPLMV4

使用https://jwt.io/ JWT检查器,我发现我的令牌实际上没有使用my-super-secret-key就被“解密”了。这让我想知道PyJWT中秘密密钥的用途是什么。我猜这只是为了签名。

如何才能真正保护我的JWT令牌呢?(我读过关于JWE的文章,但还不太明白,希望能得到一个简明的解释)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-30 04:53:19

JWT由三个部分组成:头、有效负载和签名。所有树段都将是BASE64 编码的。它们是而不是加密的

algorithm参数用于jwt.encode()定义用于对令牌进行签名的算法。这将证明令牌是真实的,防止了用户和第三方的操纵。

您可以在一组对称和不对称算法中进行选择:

对称算法将创建更短的签名,但需要对密钥进行更好的保护,因为它必须存储在每台涉及发行和验证令牌的机器上。

非对称算法将创建长签名,至少需要最小的PKI,但您只需要分发公钥。私钥保留在发出令牌的系统上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68978688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档