使用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帐户上创建加密的要点之后,以上方法首次生效并成功检索了解密的要点,但是在重新启动服务器后,该方法仅返回一个空对象。我不知道为什么。
答案 0 :(得分:0)
我知道了;重新启动服务器后,它不起作用,因为我没有保留密钥(它只是32个随机无符号整数的数组),因此每次重新启动服务器时,都会产生一个新密钥。
我将密钥保存在单独的.env
文件中,该功能现在可以正常使用了!