aiaiask.com©

开花即结果 提问即答案

JAVA文件加密和解密
原始问题:

JAVA文件加密和解密

在Java中,可以使用加密算法来实现文件的加密和解密。常用的加密算法有对称加密算法和非对称加密算法。

对称加密算法使用相同的密钥进行加密和解密,常见的对称加密算法有AES、DES和3DES。下面是一个使用AES算法进行文件加密和解密的示例代码:

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.security.Key;

public class FileEncryption {

    private static final String ALGORITHM = "AES";
    private static final String TRANSFORMATION = "AES";

    public static void encryptFile(String inputFile, String outputFile, String key) throws Exception {
        doCrypto(Cipher.ENCRYPT_MODE, inputFile, outputFile, key);
    }

    public static void decryptFile(String inputFile, String outputFile, String key) throws Exception {
        doCrypto(Cipher.DECRYPT_MODE, inputFile, outputFile, key);
    }

    private static void doCrypto(int cipherMode, String inputFile, String outputFile, String key) throws Exception {
        Key secretKey = new SecretKeySpec(key.getBytes(), ALGORITHM);
        Cipher cipher = Cipher.getInstance(TRANSFORMATION);
        cipher.init(cipherMode, secretKey);

        try (InputStream inputStream = new FileInputStream(inputFile);
             OutputStream outputStream = new FileOutputStream(outputFile)) {
            byte[] inputBytes = new byte[(int) new File(inputFile).length()];
            inputStream.read(inputBytes);

            byte[] outputBytes = cipher.doFinal(inputBytes);

            outputStream.write(outputBytes);
        }
    }

    public static void main(String[] args) {
        String inputFile = "input.txt";
        String encryptedFile = "encrypted.txt";
        String decryptedFile = "decrypted.txt";
        String key = "ThisIsASecretKey";

        try {
            encryptFile(inputFile, encryptedFile, key);
            System.out.println("File encrypted successfully.");

            decryptFile(encryptedFile, decryptedFile, key);
            System.out.println("File decrypted successfully.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码中,encryptFile方法用于加密文件,decryptFile方法用于解密文件。需要注意的是,密钥的长度需要符合加密算法的要求,例如AES算法的密钥长度为16字节。

使用上述代码,你可以将需要加密的文件路径传入inputFile参数,加密后的文件路径传入outputFile参数,密钥传入key参数,即可实现文件的加密和解密。

希望以上信息对你有帮助,如果有任何问题,请随时提问。

JAVA文件加密和解密
https://www.aiaiask.com/ask/45977.html
AI / 模型iFLYTEK
时间 / DATESeptember 5, 2023, 11:16 AM
语言zh-CN
IP / 区域广东 珠海