编写一个加密解密程序1、通过字节输入流读取原始文件中的每一个字节数据然后对其进行处理 2、通过字节输出流将处理以后的字节数据写入到另外一个文件中 3、对字节数据的处理方式可以使用异或运算符异或一个数 4、为了提高加解密的效率可以考虑使用高效的字节输入和输出流 用java实现
时间: 2024-02-01 14:12:58 浏览: 83
springboot-rsa-aes-demo:RSA和AES前端数据加密,对数据解密,以及返回参数加密,前端解密,完整原始文件,由于是城市表面常用的是这二种加解密方式,所以就写了这二种,每天会自动更换密关键字,后续我会陆续更新其他的加解密算法,技术点采用在新的spring-boot 2.3.1版本+ mybatisPlus + mysql数据库
5星 · 资源好评率100%
以下是一个简单的加密解密程序的实现,使用了字节输入输出流和异或运算符:
```java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class EncryptDecryptProgram {
// 加密解密使用的密钥
private static final byte KEY = 42;
public static void main(String[] args) {
encryptFile("plaintext.txt", "encrypted.txt");
decryptFile("encrypted.txt", "decrypted.txt");
}
/**
* 加密文件并写入到另一个文件中
* @param inputFile 原始文件名
* @param outputFile 加密后的文件名
*/
private static void encryptFile(String inputFile, String outputFile) {
try (FileInputStream inputStream = new FileInputStream(inputFile);
FileOutputStream outputStream = new FileOutputStream(outputFile)) {
int data;
while ((data = inputStream.read()) != -1) {
// 对每一个字节进行异或运算并写入输出流中
outputStream.write(data ^ KEY);
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 解密文件并写入到另一个文件中
* @param inputFile 加密文件名
* @param outputFile 解密后的文件名
*/
private static void decryptFile(String inputFile, String outputFile) {
try (FileInputStream inputStream = new FileInputStream(inputFile);
FileOutputStream outputStream = new FileOutputStream(outputFile)) {
int data;
while ((data = inputStream.read()) != -1) {
// 对每一个字节进行异或运算并写入输出流中
outputStream.write(data ^ KEY);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这个程序使用了两个方法来分别实现加密和解密。在加密过程中,程序从一个文件中读取原始数据,对每一个字节进行异或运算,并将结果写入另一个文件中。在解密过程中,程序读取加密后的文件,对每一个字节进行相同的异或运算,以还原原始数据。
为了提高效率,本程序使用了Java标准库中的字节输入输出流,这些流提供了高效的读写能力。此外,程序还使用了try-with-resources语句来确保在执行完毕后自动关闭输入输出流,避免资源泄漏。
阅读全文