Java 中的 7z 压缩和 AES 256 加密

问题描述 投票:0回答:0

我正在尝试编写一个 java 代码,它可以压缩 .7z 格式的任何文件并使用 AES 256 对其进行加密。基本上我有一个用例,我需要通过 java 代码压缩和加密文件并将其发送给用户。然后他使用 7zip 软件解压缩文件,并提供一个密码,用于在他的 Windows 机器中加密文件。我能够实现第一步,即压缩为 .7z,但我尝试了很多不同的 AES 256 加密逻辑。压缩文件是加密的,但我无法在 7zip Windows 软件中解压缩和解密它。我已经给出了我用来压缩的java代码。任何人都可以通过添加 AES 256 加密逻辑来帮助完成它,稍后可以在 7zip 软件中解压缩和解密。

import java.io.*;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;

import org.apache.commons.compress.archivers.sevenz.*;

public class LZMACompressionExample {

    
    public static void main(String[] args) throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {
        
        String inputFilePath = "D:\\f\\test.txt";
        String outputFilePath = "D:\\c\\test.7z";

        System.out.println("File compression completed.");

        // create 7z archive with original file name
        SevenZOutputFile sevenZOutput = new SevenZOutputFile(new File(outputFilePath));
        SevenZArchiveEntry entry = sevenZOutput.createArchiveEntry(new File(inputFilePath), new File(inputFilePath).getName());
        sevenZOutput.putArchiveEntry(entry);

        // write compressed data to 7z archive
        FileInputStream compressedFileInputStream = new FileInputStream(inputFilePath);
        byte[] compressedBuffer = new byte[1024];
        int compressedLen;
        while ((compressedLen = compressedFileInputStream.read(compressedBuffer)) > 0) {
            sevenZOutput.write(compressedBuffer, 0, compressedLen);
        }

        // close streams
        sevenZOutput.closeArchiveEntry();
        compressedFileInputStream.close();
        sevenZOutput.close();

        System.out.println("File compressed and saved in .7z format with original file name inside.");
        
    }
}

我尝试了很多 AES 256 加密 java 逻辑。该文件正在加密,但无法在 7zip Windows 软件中打开。它抛出以下错误。

java aes sha256 7zip
© www.soinside.com 2019 - 2024. All rights reserved.