如何从加密令牌中获取密钥?

Posted

技术标签:

【中文标题】如何从加密令牌中获取密钥?【英文标题】:How do I get the secret key from an encrypted token? 【发布时间】:2020-02-29 03:49:47 【问题描述】:

我有一个节点 js 应用程序。我需要从生成的令牌中获取密钥,以使用我的单独验证方法。是否有任何解码令牌方法或从 JWT 令牌方法中拆分密钥?因为我目前通过向标头发送电子邮件地址来提供个人令牌生产,所以我需要一种可以从令牌中获取密钥的方法来防止这种情况。这是我的代码。

这是我在登录代码部分的令牌创建部分:(如果密码为真:)

 const secretKey= user.email;
 const token = jwt.sign(
    email:user.email,
    password: user.password

, 
secretKey,

    expiresIn :"2h"

)
return res.status(200).send( message: 'success', token: token);

然后在中间件中我使用以下代码:

const jwt = require('jsonwebtoken');

module.exports = (req, res, next) => 
try 

const token = req.headers.authorization.split(" ")[1];
const decodedToken = jwt.verify(token, req.headers.user);
req.userData = decodedToken;
next();
catch(error) 
return res.status(401).send(
message: 'Auth failed'
);

还有我的 app.js:

 const checkAuth = require('../middleware/checkauth');
 router.get('/api/company',checkAuth,companyController.list);

编辑:我了解到javascript中没有可以解码令牌密钥的函数。密钥是使用特殊算法创建的。

【问题讨论】:

【参考方案1】:

您无法从加密令牌中检索密钥,否则每个人都可以为您的应用生成有效令牌。您应该将秘密保存在本地服务器上,并且永远不要公开它。 然后,当您调用jwt.verify 方法时,您应该传递秘密而不是req.headers.user

【讨论】:

以上是关于如何从加密令牌中获取密钥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 应用程序中存储机密、密钥、令牌、加密密钥等关键敏感信息

如何从标头中正确获取 jwt 令牌并将其与 express 一起使用

如何从机器人聊天中获取 Twitter OAuth 访问令牌/秘密?

如何使用 Twitter API 获取用户访问令牌和访问密钥

如何从字符串获取 PKCS8 RSA 私钥/从 XML 获取 RSA 密钥对

有人做过wp上如何从pfx文件中获取私钥吗