Image Encryption and Decryption Using AES Algorithm in Java
Image Encryption and Decryption Using AES Algorithm in Java
Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.*;
import java.security.Key;
import java.util.Random;
public ImageEncryptionApplet() {
// Set layout manager
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(10, 10, 10, 10);
gbc.fill = GridBagConstraints.BOTH;
// Background color
getContentPane().setBackground(new Color(60, 63, 65));
// Create components
uploadButton = createCustomButton("Upload Image");
encryptButton = createCustomButton("Encrypt");
decryptButton = createCustomButton("Decrypt");
gbc.gridx = 1;
add(encryptButton, gbc);
gbc.gridx = 2;
add(decryptButton, gbc);
gbc.gridx = 1;
add(encryptedImageLabel, gbc);
gbc.gridx = 2;
add(decryptedImageLabel, gbc);
encryptButton.setEnabled(false);
decryptButton.setEnabled(false);
// Frame settings
setTitle("Image Encryption and Decryption");
setExtendedState(JFrame.MAXIMIZED_BOTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == uploadButton) {
uploadImage();
} else if (e.getSource() == encryptButton) {
new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() {
try {
encryptImage();
} catch (Exception ex) {
JOptionPane.showMessageDialog(ImageEncryptionApplet.this,
"Error during encryption: " + ex.getMessage());
ex.printStackTrace();
}
return null;
}
}.execute();
} else if (e.getSource() == decryptButton) {
new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() {
try {
decryptImage();
} catch (Exception ex) {
JOptionPane.showMessageDialog(ImageEncryptionApplet.this,
"Error during decryption: " + ex.getMessage());
ex.printStackTrace();
}
return null;
}
}.execute();
}
}
encryptButton.setEnabled(true);
decryptButton.setEnabled(false);
decryptedImageLabel.setIcon(new
ImageIcon(decryptedImage.getScaledInstance(400, 400, Image.SCALE_SMOOTH)));
decryptedImageLabel.setText("");