原始问题:
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参数,即可实现文件的加密和解密。
希望以上信息对你有帮助,如果有任何问题,请随时提问。
Prev:新青年如何发扬吃苦耐劳的精神