JAVA文件加密和解密
在Java中,可以使用加密算法来实现文件的加密和解密。常用的加密算法有对称加密算法和非对称加密算法。
对称加密算法使用相同的密钥进行加密和解密,常见的对称加密算法有AES、DES和3DES。下面是一个使用AES算法进行文件加密和解密的示例代码:
```java
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`参数,即可实现文件的加密和解密。
希望以上信息对你有帮助,如果有任何问题,请随时提问。
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!