0

使用 JavaScript 和 nacl 库获取 GitHub 要点并返回解密的内容。所有的nacl方法都接受并返回UINT8数组,所以值得注意的是key也是一个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 帐户上使用单独的方法创建加密 gist 后,上述方法第一次工作并成功检索解密的 gist,但在重新启动服务器后,该方法仅返回一个空对象。我不知道为什么。

4

1 回答 1

0

我想到了; 重新启动服务器后它不起作用,因为我没有保留密钥——这只是一个由 32 个随机无符号整数组成的数组——所以每次重新启动服务器时都会生成一个新密钥。

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

于 2018-09-18T00:05:45.350 回答