You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10/11内置工具无法解压minizip-asm生成的加密Zip文件求助

解决Windows内置解压工具无法打开minizip-asm生成的加密Zip文件问题

问题原因

Windows 10/11内置的Zip解压工具仅支持传统ZipCrypto加密算法,而minizip-asm库默认使用AES系列加密(AES-128/AES-256),这种加密方式不被Windows内置工具兼容,因此会抛出0x80004005:未指定错误。第三方工具如7-Zip支持多种加密算法,所以能正常解压生成的Zip文件。

修复方案

在调用mz.append方法时,显式指定加密算法为ZipCrypto,对应minizip-asm的参数encrypt: 0(参数取值:0=ZipCrypto,1=AES-128,2=AES-256)。

修改后的代码

function gfn_exportExcel(dataJson, fn, pw) {

    var data = dataJson.data;
    var wch = dataJson.wch;

    // step 1.making workbook 
    var wb = XLSX.utils.book_new();

    // step 2. making excel sheet
    var newWorksheet = XLSX.utils.aoa_to_sheet(data);

    // step 2-2. setting columns
    newWorksheet["!cols"] = gfn_fitToColumnExcel(data, wch);

    // step 3. naming workbook
    XLSX.utils.book_append_sheet(wb, newWorksheet, "data");

    // step 4. making excel file
    var wbout = XLSX.write(wb, {bookType:'xlsx',  type: 'binary'});

    // step 5. export excelfile or export files as zip file
    if( pw ){
        var mz = new Minizip();
        // 显式指定加密算法为ZipCrypto,兼容Windows内置解压工具
        mz.append('data.xlsx', gfn_s2ab(wbout), {password : pw, encrypt: 0});
        saveAs(new Blob([mz.zip()],{type:"application/octet-stream"}), fn + ".zip");
    } else {
        saveAs(new Blob([gfn_s2ab(wbout)],{type:"application/octet-stream"}), fn + ".xlsx");
    }
}

额外说明

如果需要更高强度的加密且不介意用户使用第三方工具解压,可以保留默认的AES加密;若必须兼容Windows内置工具,则只能选择ZipCrypto(注意:ZipCrypto的加密强度较低,安全性不如AES)。

内容的提问来源于stack exchange,提问作者Joon Lim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 23:54:58