Node.js 使用带有对称密钥加密的unload命令解密卸载的s3文件
我尝试从s3解密一个文件,该文件是通过使用AES对称密钥加密的redshift的unload命令上传的。 如果我们使用AWS java sdk下载,并将aes密钥提供给s3客户端,则可以正常工作。但如果我们在下载文件后尝试手动解密,则会出现Node.js 使用带有对称密钥加密的unload命令解密卸载的s3文件,node.js,amazon-web-services,encryption,amazon-s3,aes,Node.js,Amazon Web Services,Encryption,Amazon S3,Aes,我尝试从s3解密一个文件,该文件是通过使用AES对称密钥加密的redshift的unload命令上传的。 如果我们使用AWS java sdk下载,并将aes密钥提供给s3客户端,则可以正常工作。但如果我们在下载文件后尝试手动解密,则会出现javax.crypto.BadPaddingException:给定的最终块未正确填充错误 手动解密文件的原因是我想使用node.js对文件进行解密,据我所知,node中没有sdk可以直接进行解密 我尝试过的Node.js代码: var AWS = requ
javax.crypto.BadPaddingException:给定的最终块未正确填充
错误
手动解密文件的原因是我想使用node.js对文件进行解密,据我所知,node中没有sdk可以直接进行解密
我尝试过的Node.js代码:
var AWS = require('aws-sdk');
var fs = require('fs');
var crypto = require('crypto');
var CryptoJS = require("crypto-js");
var algorithm = 'aes256';
var inputEncoding = 'hex';
var outputEncoding = 'utf-8';
var key = "symmetric key base 64"; //prod
var data = fs.readFileSync('/tmp/files/myfile');
console.log(data);
var decipher = crypto.createDecipher(algorithm,key);
var deciphered = decipher.update(data, inputEncoding, outputEncoding);
console.log(deciphered);
deciphered += decipher.final(outputEncoding);
console.log(deciphered);
当我尝试此操作时,会出现以下错误:
错误:错误:06065064:数字信封例程:EVP_DecryptFinal_ex:bad decrypt
,因此Redshift使用信封加密的方式与AWS SDK使用信封加密在S3上存储文件的方式相同。因此,为了解密文件,您应该:
因此,Redshift使用信封加密的方式与AWS SDK使用信封加密在S3上存储文件的方式相同。因此,为了解密文件,您应该: