首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用nodejs加密和解密报表文档

如何使用nodejs加密和解密报表文档
EN

Stack Overflow用户
提问于 2020-12-08 19:33:39
回答 3查看 1.4K关注 0票数 2

卖方api /reports/2020-09-04/documents/amzn1.tortuga.3.18666cbf-dfdf-dsfsd-bf4b-sdfdsfsdfsdf.TBWRJF481G44N

响应

{“有效载荷”:{“"amzn1.tortuga.3.18666cbf-dfdf-dsfsd-bf4b-sdfdsfsdfsdf.TBWRJF481G44N",”:"encryptionDetails":{“标准”:"AES","initializationVector":"nG2rSrj1Ra9e03IStEBkdg==","key":"9CT0qwtzUHLXlFTh0aLxk4qSQYAJ7texG8KDIZ0JSy8=“},"url":"https://tortuga-prod-eu.s3-eu-west-1.amazonaws.com/%2FNinetyDays/amzn1.tortuga.3.18666cbf-e671-asds-sdfs-dsfdsfdsfds.sdvfdsdssdfsd?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201208T192515Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=dscfdsfsdfsdfdsfsdf%2F20201208%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=45hjkkjkjdfdsfsd4545jkkjhkj4554j”}}

解密nodejs码

const crypto = require('crypto');

const算法= 'AES';

const = '9CT0qwtzUHLXlFTh0aLxk4qSQYAJ7texG8KDIZ0JSy8=';const iv =‘nG2rSrj1Ra9e03IStEBkdg=’‘;

const解密=crypto.createDecipheriv(算法,密钥,iv);

错误-无效的IV长度

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-12-21 08:34:49

不知道节点js,但我已经在PHP中实现了这个API,它适合我。这可能对你有帮助。

代码语言:javascript
复制
$key = base64_decode('xxxxx');
$iv = base64_decode('xxxxxx');
$decryptedData = openssl_decrypt(file_get_contents($url), 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
票数 8
EN

Stack Overflow用户

发布于 2021-09-29 05:22:52

NodeJS代码

代码语言:javascript
复制
const zlib = require('zlib');
const fs = require('fs');


let key = ((new Buffer.from((document.encryptionDetails.key), 'base64')));
let initializationVector = ((new Buffer.from((document.encryptionDetails.initializationVector), 'base64')));

let params = { method: `get`, url: `${document.url}`, responseType: 'stream', headers: { "Accept-Encoding": "gzip, deflate, br" }, encoding: null }

let documentResponse = await axios.request(params);

var decipher = crypto.createDecipheriv('aes-256-cbc', key, initializationVector);
decipher.setAutoPadding(false);
var gunzip = zlib.createGunzip();

            
const filePath = `/<path>/<fileName>`;

var writerOne = fs.createWriteStream(filePath);
if (document.compressionAlgorithm) {   (documentResponse.data).pipe(decipher).pipe(gunzip).pipe(writerOne); }
else { (documentResponse.data).pipe(decipher).pipe(writerOne); }

gunzip.on('error', error => { console.error(error.message || error); writerOne.close(); });
writerOne.on('error', error => { console.error(error.message || error); writerOne.close(); reject(`${error.message || error}`); });
writerOne.on('close', () => { resolve(filePath); });
票数 0
EN

Stack Overflow用户

发布于 2021-12-15 09:24:35

这可能对你有帮助。

代码语言:javascript
复制
$key = base64_decode('xxxxx');
$iv = base64_decode('xxxxxx');
$decryptedData = openssl_decrypt(file_get_contents($url), 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
 
if($compression_algorithm && $compression_algorithm == 'GZIP'){
    $decryptedData = gzdecode($decryptedData);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65205701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档