des算法实现图片加密解密不调用库和包java实现
时间: 2023-09-30 22:02:39 浏览: 99
DES算法是一种对称加密算法,可以用于图片的加密和解密。以下是Java实现DES算法图片加密和解密的示例代码:
```java
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class ImageEncryption {
// 加密密钥
private static final byte[] keyBytes = { 0x11, 0x22, 0x4F, 0x58, (byte)0x88, 0x10, 0x40, 0x38 };
// 加密图片
public static void encryptImage(String inputFile, String outputFile) throws Exception {
// 读入图片文件
File file = new File(inputFile);
FileInputStream fis = new FileInputStream(file);
byte[] inputBytes = new byte[(int)file.length()];
fis.read(inputBytes);
fis.close();
// 生成DES密钥
SecretKeySpec key = new SecretKeySpec(keyBytes, "DES");
// 初始化加密器
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
// 加密图片
byte[] outputBytes = cipher.doFinal(inputBytes);
// 写出加密后的图片文件
FileOutputStream fos = new FileOutputStream(outputFile);
fos.write(outputBytes);
fos.close();
}
// 解密图片
public static void decryptImage(String inputFile, String outputFile) throws Exception {
// 读入加密后的图片文件
File file = new File(inputFile);
FileInputStream fis = new FileInputStream(file);
byte[] inputBytes = new byte[(int)file.length()];
fis.read(inputBytes);
fis.close();
// 生成DES密钥
SecretKeySpec key = new SecretKeySpec(keyBytes, "DES");
// 初始化解密器
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
// 解密图片
byte[] outputBytes = cipher.doFinal(inputBytes);
// 写出解密后的图片文件
FileOutputStream fos = new FileOutputStream(outputFile);
fos.write(outputBytes);
fos.close();
}
public static void main(String[] args) throws Exception {
// 加密图片
encryptImage("input.jpg", "output.enc");
// 解密图片
decryptImage("output.enc", "output.jpg");
}
}
```
需要注意的是,上述代码中的加密密钥是固定的,实际应用中应该使用随机生成的密钥。此外,加密后的图片文件可能比原始图片文件稍微大一些,因为加密后的数据需要填充至8字节的整数倍。
阅读全文