GET请求第一次成功返回解密的要点,但重新启动服务器后为空对象

时间:2018-09-16 19:45:33

标签: javascript server uint8array nacl-cryptography

使用JavaScript和nacl库获取GitHub要点,并返回解密后的内容。所有的nacl方法都接受并返回UINT8数组,因此值得注意的是,该键也是32个随机字节的UINT8数组。

   server.get('/fetchmessagefromself:id', (req, res) => {
      // TODO:  Retrieve and decrypt the secret gist corresponding to the given ID
      const id = req.query.id;
      github.gists.get({ id })
        .then((response) => {
          const gist = response.data;
          const file = Object.keys(gist.files);
          const box = gist.files[file].content;
          const nonce = nacl.util.decodeBase64(box.slice(-32));
          const ciphertext = nacl.util.decodeBase64(box.slice(0, -32));
          const text = nacl.secretbox.open(ciphertext, nonce, key);

          res.send(nacl.util.encodeUTF8(text));
        })
        .catch((err) => {
          res.json(err);
        });
    });

在使用单独的方法在我的GitHub帐户上创建加密的要点之后,以上方法首次生效并成功检索了解密的要点,但是在重新启动服务器后,该方法仅返回一个空对象。我不知道为什么。

1 个答案:

答案 0 :(得分:0)

我知道了;重新启动服务器后,它不起作用,因为我没有保留密钥(它只是32个随机无符号整数的数组),因此每次重新启动服务器时,都会产生一个新密钥。

我将密钥保存在单独的.env文件中,该功能现在可以正常使用了!