Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs-使用“私钥”编码到base64,并且只能在服务器中解码_Javascript_Node.js_Base64_Cryptojs - Fatal编程技术网

Javascript Nodejs-使用“私钥”编码到base64,并且只能在服务器中解码

Javascript Nodejs-使用“私钥”编码到base64,并且只能在服务器中解码,javascript,node.js,base64,cryptojs,Javascript,Node.js,Base64,Cryptojs,我的用例如下所示: 传入到服务器的http请求以进行登录 生成用户令牌。令牌是从各个字段构建的Json对象。然后转换为字符串和Base64 const stringObject = { elementA: stringA, elementB: stringB }; const bufferString = new Buffer(`${JSON.stringify(stringObject)}`); const encodedAccessToken = bufferString.toSt

我的用例如下所示:

传入到服务器的http请求以进行登录 生成用户令牌。令牌是从各个字段构建的Json对象。然后转换为字符串和Base64

const stringObject = {
  elementA: stringA,
  elementB: stringB
};

const bufferString = new Buffer(`${JSON.stringify(stringObject)}`);
const encodedAccessToken = bufferString.toString('base64');
生成的字符串现在可以在任何地方解码。 有没有一种方法可以对其进行编码,这样只有我的服务器才能对其进行解码?就像用某种密钥编码一样


谢谢。

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

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


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

请改用jsonwebtoken。它可以用一个秘密短语加密你的对象。类库节点jsonwebtoken非常易于使用

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

编码数据并生成令牌:

{foo:'bar'}是您加密的字段

用同一个键解码shhhh


是的,你需要加密。寻找加密算法,例如AES。您还需要使用某种HMAC确保完整性,因为原始加密数据仍然可以在不知道密钥的情况下更改。虽然您可能仍然需要使用base64作为字符串提供加密数据,但加密算法本身与base64无关。实际上,您需要的是非对称加密。@JefreySobreiraSantos,您能提供一个示例吗?
var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar' }, 'shhhhh');
// verify a token symmetric
jwt.verify(token, 'shhhhh', function(err, decoded) {
  console.log(decoded.foo) // bar
});