利用Java实现:读取D:\2023training\file03.txt,加密写入D:\2023training\file03_encryption.txt。并且读取加密文件D:\2023training\file03_encryption.txt,解密写入到D:\2023training\file03_decrypt.txt。
时间: 2023-08-15 10:10:00 浏览: 167
您可以使用Java的文件操作和加密解密功能来实现读取文件并进行加密解密的操作。以下是一个示例代码:
```java
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
public class FileEncryptionExample {
public static void main(String[] args) {
String inputFile = "D:\\2023training\\file03.txt";
String encryptedFile = "D:\\2023training\\file03_encryption.txt";
String decryptedFile = "D:\\2023training\\file03_decrypt.txt";
String key = "myEncryptionKey"; // 加密解密使用的密钥
try {
// 加密文件
encryptFile(inputFile, encryptedFile, key);
// 解密文件
decryptFile(encryptedFile, decryptedFile, key);
System.out.println("文件加密解密完成");
} catch (Exception e) {
e.printStackTrace();
}
}
// 加密文件
public static void encryptFile(String inputFile, String outputFile, String key) throws Exception {
FileInputStream fis = new FileInputStream(inputFile);
FileOutputStream fos = new FileOutputStream(outputFile);
SecretKeySpec sks = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, sks);
CipherOutputStream cos = new CipherOutputStream(fos, cipher);
byte[] block = new byte[8];
int i;
while ((i = fis.read(block)) != -1) {
cos.write(block, 0, i);
}
cos.close();
fis.close();
}
// 解密文件
public static void decryptFile(String inputFile, String outputFile, String key) throws Exception {
FileInputStream fis = new FileInputStream(inputFile);
FileOutputStream fos = new FileOutputStream(outputFile);
SecretKeySpec sks = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, sks);
CipherInputStream cis = new CipherInputStream(fis, cipher);
byte[] block = new byte[8];
int i;
while ((i = cis.read(block)) != -1) {
fos.write(block, 0, i);
}
fos.close();
cis.close();
}
}
```
在上面的代码中,我们定义了`encryptFile()`和`decryptFile()`两个方法来分别加密和解密文件。首先,我们使用`FileInputStream`读取原始文件,然后使用`FileOutputStream`写入加密或解密后的文件。我们使用`SecretKeySpec`来创建一个加密解密使用的密钥,并使用`Cipher`类来进行加密解密操作。在加密和解密过程中,我们使用`CipherOutputStream`和`CipherInputStream`来处理数据流。最后,我们通过指定的文件路径和密钥调用这两个方法来进行文件的加密和解密操作。
请注意,在实际应用中,加密解密使用的密钥应该更为复杂和安全,并且可以通过其他方式进行存储和传输。此示例仅用于演示目的。