javascript - 使用 javascript 提取受密码保护的 zip 文件(客户端)

标签 javascript encryption jszip zip.js

有许多优秀的库可以在客户端打开 zip 文件,例如:zip.js、jszip 等...
但我找不到任何可以打开加密 zip 文件的库。是否有在客户端(在浏览器中)打开 zip 文件的解决方案?

最佳答案

Zip.js 支持加密。在演示中尝试:
https://gildas-lormeau.github.io/zip.js/demos/demo-read-file.html .下面是如何检查 zip 文件(作为 Blob 对象提供)的密码是否有效的示例。

const verifyZipPassword = async (file, password) => {
    let reader;
    try {
        reader = new zip.ZipReader(new zip.BlobReader(file), { password });
        const entries = await reader.getEntries();
        for (const entry of entries) {
            try {
                await entry.getData(new zip.BlobWriter());
            } catch (error) {
                if (error.message === zip.ERR_ENCRYPTED ||
                    error.message === zip.ERR_INVALID_PASSWORD) {
                    return false;
                } else {
                    throw error;
                }
            }
        }
    } finally {
        await reader.close();
    }
    return true;
};

关于javascript - 使用 javascript 提取受密码保护的 zip 文件(客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28063494/

相关文章:

javascript - Rails 3.1 Ajax 部分中的 Google Charts

javascript - JavaScript 有类吗?

java - 使用 JASYPT + Hibernate + Spring 进行字符串加密

encryption - 如果我使用 SSL,加密会增加任何好处吗?

javascript - ngx-Bootstrap 中的月份范围选择器

javascript - Bootstrap 需要验证才能选择下拉列表之一

php - 加密和解密字符串 - PHP

javascript - 如何使用javascript获取本地项目中的文件夹/文件?

node.js - 使用 Meteor 从 Github Assets API 下载文件时出错

javascript - 为什么使用JSZip压缩比为0