【发布时间】:2022-08-12 05:23:55
【问题描述】:
我正在使用getReport 操作来获取documentId,稍后我使用它来下载加密和压缩的报告文档本身。
代码如下所示:
const documentData = await this.sellingPartner.callAPI({
operation: \"getReportDocument\",
endpoint: \"reports\",
path: { reportDocumentId: reportData.reportDocumentId }
})
const request = https.get(documentData.url, function(res) {
const data = [];
res.on(\"data\", chunk => data.push(chunk));
res.on(\"end\", () => {
const key = new Buffer.from(documentData.encryptionDetails.key, \'base64\')
const initializationVector = new Buffer.from(documentData.encryptionDetails.initializationVector, \'base64\')
const input = Buffer.concat(data)
let result;
try {
result = aes.decryptText(
aes.CIPHERS.AES_256,
key,
initializationVector,
input
)
} catch (e) {
console.log(e)
}
console.log(\">>>>\")
console.log(result)
zlib.gunzip(result, (err, unzipped) => {
debugger
});
});
}
我得到的当前错误来自zlib:
Error: incorrect header check
at Zlib.zlibOnError [as onerror] (node:zlib:189:17)
即使我将未加密的值直接传递给 zlib,我也会得到相同的结果。
文档中有一个Sample Java code example,但我不能很好地理解他们在哪里解密:解压缩之前还是之后?
无论如何,解决这个问题的正确方法是什么:解压缩和解密或解密和解压缩?前者根本不起作用,后者几乎起作用,但在解压缩部分失败。
如何解决解压问题?
标签: javascript node.js encryption request selling-partner-api