使用 node-js 解压缩受密码保护的存档

Unzip a password-protected archive using node-js

我需要将受密码保护的存档(首选 zip)的内容读取到 node-js 应用程序,而不将受保护的内容写入文件

此外,该应用程序是跨平台的,因此 this 等解决方案无济于事

我也看了here但是答案中没有代码

我能找到的唯一支持加密的库是:https://github.com/rf00/minizip-asm.js

不幸的是,它维护得不好。

此解决方案将读取您可以从 base64 获得的文件缓冲区或通过读取 zip 文件,然后解压缩并打开 password-protected 文件完成 in-memory。我希望这会有所帮助 -

const unzipper = require("unzipper");

const unzipAndUnlockZipFileFromBuffer = async (zippedFileBase64, password) => {
  try {
    const zipBuffer = Buffer.from(zippedFileBase64, "base64"); // Change base64 to buffer
    const zipDirectory = await unzipper.Open.buffer(zipBuffer); // unzip a buffered file
    const file = zipDirectory.files[0]; // find the file you want

    // if you want to find a specific file by path
    // const file = zipDirectory.files.find((f) => f.path === "filename");

    const extracted = await file.buffer(password); // unlock the file with the password

    console.log(extracted.toString()); // file content
  } catch (e) {
    console.log(e);
  }
};

const zippedFileBase64 = "{{BASE64}}";
const password = "1234";
unzipAndUnlockZipFileFromBuffer(zippedFileBase64, password);