java实现文件加密解密
时间: 2024-09-19 12:03:38 浏览: 48
在Java中实现文件的加密和解密通常涉及使用密码学算法,如对称加密(如AES、DES)或非对称加密(如RSA)。以下是简要步骤:
1. **选择加密算法**:确定使用的加密算法。对称加密速度较快,适用于大量数据;非对称加密(如RSA)适合小量敏感信息交换,因为生成公钥和私钥的过程相对较慢。
2. **生成密钥**:如果是对称加密,需要生成相同的密钥用于加密和解密。对称加密可以使用`java.util.SecretKey`。非对称加密则需要一对密钥(公钥和私钥),Java提供了`javax.crypto.Cipher`和`java.security.KeyPairGenerator`。
3. **读取文件内容**:使用`FileInputStream`读取原始文件内容。
4. **加密过程**:
- 对于对称加密:使用`Cipher`实例的`doFinal()`方法,将明文输入流转换为密文输出流。
- 对于非对称加密:先用接收方的公钥加密,然后用发送方的私钥解密。
5. **保存加密后的文件**:
- 将加密后的数据写入新的文件,确保安全性。
6. **解密过程**:
- 同样使用`Cipher`的`doFinal()`方法,但这次用的是解密密钥(私钥)和相应的加密算法。
```java
// 对称加密示例 (AES)
SecretKey secretKey = generateSymmetricKey();
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(fileContent);
// 保存密文到新文件
FileOutputStream outputStream = new FileOutputStream(encryptedFile);
outputStream.write(encryptedBytes);
outputStream.close();
// 解密示例
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedBytes = cipher.doFinal(decryptedFileContent);
FileOutputStream outputStream = new FileOutputStream(originalFile);
outputStream.write(decryptedBytes);
outputStream.close();
```
阅读全文