Node.js中OpenSSL base64 enc的等价物(openssl enc -base64 -d -A)?

有一个我正在使用的API返回的数据是gunzipped和双Base64编码。 我试过在NPM中使用几个Base64库无济于事。 由于输出编码错误,执行每个库的等效decodeBase64(decodeBase64(something))总是失败。

这个工作在shell中: something | openssl enc -base64 -d -A | openssl enc -base64 -d -A | gunzip something | openssl enc -base64 -d -A | openssl enc -base64 -d -A | gunzip something | openssl enc -base64 -d -A | openssl enc -base64 -d -A | gunzip 。 我本质上是寻找一个Node.js方法,其行为与something | openssl enc -base64 -d -A | openssl enc -base64 -d -A | gunzip完全相同 something | openssl enc -base64 -d -A | openssl enc -base64 -d -A | gunzip something | openssl enc -base64 -d -A | openssl enc -base64 -d -A | gunzip

以下库在这种情况下不起作用:base64 base-64 js-base64

解决的办法是find一个可以处理Base64(反映OpenSSL)的string和二进制表示的库。

 const forge = require('node-forge') const zlib = require('zlib') const pass1 = forge.util.decode64('SDRzSUFBQUFBQUFBQUNzcEtrMEZBSTFNL1AwRUFBQUE=') const pass2 = forge.util.binary.base64.decode(pass1) const result = zlib.gunzipSync(new Buffer(pass2)).toString() console.log(result) // true