使用 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,但在重新启动服务器后,该方法仅返回一个空对象。我不知道为什么。