Node.js-使用“私钥”编码为base64,并且只能在服务器中进行解码

时间:2018-09-08 11:35:48

标签: javascript node.js base64 cryptojs

我的用例如下:

  1. 进入服务器的http请求登录
  2. 用户令牌已生成。令牌是从各个字段构建的Json对象。然后转换为String和Base64。

    const stringObject = {
      elementA: stringA,
      elementB: stringB
    };
    
    const bufferString = new Buffer(`${JSON.stringify(stringObject)}`);
    const encodedAccessToken = bufferString.toString('base64');
    

现在可以在任何地方解码生成的字符串。 有没有一种方法可以对它进行编码,例如只有我的服务器才能对其进行解码?就像用某种密钥对其进行编码一样。

谢谢。

3 个答案:

答案 0 :(得分:1)

您可以使用JWT令牌节点模块:link

编码数据并生成令牌

var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar' }, 'shhhhh');
  

{foo:'bar'}是您加密的领域

通过相同的密钥shhhhh

解码
// verify a token symmetric
jwt.verify(token, 'shhhhh', function(err, decoded) {
  console.log(decoded.foo) // bar
});

答案 1 :(得分:0)

这不能直接回答您的问题,但是我认为您的整体方法是错误的。您试图实现的是拥有会话数据。您无需将该数据发送到客户端再发送回去。这不是一个很好的做法。相反,您应该将此数据存储在服务器上,最好存储在数据库中。

您要做的是创建一个唯一的密钥,该密钥是随机生成的。您将使用此密钥存储用户数据,并将密钥发送给客户端以用于请求。您也可以通过将其设置为Cookie变量来实现。

用户数据可以具有其他字段变量,以更安全地访问。就像客户端的IP一样,可能还有清理时间。

答案 2 :(得分:0)

改用jsonwebtoken。它可以用一个秘密短语加密您的对象。 node-jsonwebtoken之类的库非常易于使用。