微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Mule 4 中使用密码压缩有效负载?

如何解决如何在 Mule 4 中使用密码压缩有效负载?

我需要使用加密 AES256 的 Mule 4 压缩负载输出 CSV 的 dataweave 脚本)。

我检查了 Mule 4 的压缩模块,它不支持密码,我尝试将它与加密模块结合使用,但它最终要么加密 zip 中的 CSV,要么加密 zip。>

我也需要能够在 Cloudhub 中运行的解决方案。

有什么想法吗?

干杯, 史蒂夫

解决方法

仅加密文件是行不通的,因为 Zip 格式要求加密文件使用 encryption header

Mule Compression 模块使用 Apache Commons Compress 库来实现 Zip 文件,doesn't currently support Zip encrypted files

您可以尝试实现自己的模块或扩展现有的 Compression module 以支持加密。您也可以只调用 Java 类来执行此操作,但它不会在 Mule 应用程序中重复使用。

可用于实现加密 Zip 文件的一个库是 Zip4j,但可能还有其他库。由于它是一个 Java 实现,因此应该可以在任何平台上运行。

,

我的解决方案:

       <java:invoke-static doc:name="Invoke static" doc:id="6244c876-c938-4541-a8aa-a94d2198aa28" class="au.com.test.PasswordProtectedZip" method="zip(String,String)">

            <java:args ><![CDATA[#[{

 "fileName": p('file.path') ++ vars.fileName,"password": p('secure::encryption.password')

}]]]>

       </java:invoke-static>

Java 类:

package au.com.test;

导入 java.io.File;

导入 java.io.IOException;

导入 java.util.Arrays;

导入 java.util.List;

导入 net.lingala.zip4j.ZipFile;

导入 net.lingala.zip4j.model.ZipParameters;

导入 net.lingala.zip4j.model.enums.AesKeyStrength;

import net.lingala.zip4j.model.enums.EncryptionMethod;

公共类 PasswordProtectedZip {

 public static File zip(String fileName,String password) {

       System.out.println("Zipping " + fileName);

       File file = null;

       try {

            ZipParameters zipParameters = new ZipParameters();

            zipParameters.setEncryptFiles(true);

            zipParameters.setEncryptionMethod(EncryptionMethod.AES);

            zipParameters.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_256);



            List<File> filesToAdd = Arrays.asList(new File(fileName));



            ZipFile zipFile = new ZipFile(fileName + ".zip",password.toCharArray());

            zipFile.addFiles(filesToAdd,zipParameters);

            file = zipFile.getFile();

            System.out.println("file = " + file.getAbsolutePath());

            zipFile.close();

       } catch (Exception e) {

            e.printStackTrace();

       }



       return file;

 }

}

以及 pom.xml 中的 deps:

    <dependency>
        <groupId>net.lingala.zip4j</groupId>
        <artifactId>zip4j</artifactId>
        <version>1.3.1</version>
    </dependency>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。