본문 바로가기
JAVA

[JAVA] zip4j 이용하여 파일 앞축 및 암호 설정 테스트 진행

by Hwoarang757 2023. 10. 24.

net.lingala.zip4j 라이브러리를 이용하여 테스트 해보았습니다!

package com.doc.controller;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import net.lingala.zip4j.ZipFile;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.model.enums.AesKeyStrength;
import net.lingala.zip4j.model.enums.AesVersion;
import net.lingala.zip4j.model.enums.CompressionLevel;
import net.lingala.zip4j.model.enums.CompressionMethod;
import net.lingala.zip4j.model.enums.EncryptionMethod;

@RestController
public class ZipTestController {

    @GetMapping("/ZipTest")
    public void ZipTest(@RequestParam HashMap<String,String> param) throws IOException {
        ZipParameters zipParameter = new ZipParameters();
        zipParameter.setCompressionMethod(CompressionMethod.DEFLATE );
        zipParameter.setCompressionLevel(CompressionLevel.FASTEST);


        zipParameter.setEncryptFiles(true);

        //AES256 알고리즘을 이용
        if(param.get("ALG").equals("AES256")) {
            zipParameter.setEncryptionMethod(EncryptionMethod.AES);
            zipParameter.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_256);
            zipParameter.setAesVersion(AesVersion.TWO);
        }
        //ZIP Standard 알고리즘
        else
            zipParameter.setEncryptionMethod(EncryptionMethod.ZIP_STANDARD);

        ZipFile zipFile = new ZipFile("D:/TestCompress.zip" , "1q2w3e4r!@#$".toCharArray());

        zipFile.addFile(new File("D:\\sample\\204_98DPI_4page.tif"),zipParameter);
        zipFile.addFile(new File("D:\\sample\\20191113_093900.jpg"),zipParameter);

        zipFile.close();
    }

}