Doubt anyone will ever use it but I learned while making it, maybe someone else will learn while looking at it.
Code:
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
/**
* Uses AES to encrypt and decrypt a message.
*
* @Author Ryan Greene
*/
public class AES {
/**
* The message.
*/
private static final String MESSAGE = "Hello world!";
/**
* The key generator instance.
*/
private static KeyGenerator keyGenerator;
/**
* The secret key spec instance.
*/
private static SecretKeySpec secretkeySpec;
/**
* The cipher instance.
*/
private static Cipher cipher;
/**
* The secret key instance.
*/
private static SecretKey secretKey;
/**
* The key size.
*/
private static final int KEY_SIZE = 128;
/**
* Decrypts the message.
*
* @param encrypted
* The encrypted message.
* @return The decrypted message.
*/
private static String decrypt(byte[] encrypted) {
try {
cipher.init(Cipher.DECRYPT_MODE, secretkeySpec);
return new String(cipher.doFinal(encrypted));
} catch (Exception ex) {
System.err.println(ex);
}
return null;
}
/**
* Encrypts the message.
*
* @return The encrypted message.
*/
private static byte[] encrypt(String decrypted) {
try {
cipher.init(Cipher.ENCRYPT_MODE, secretkeySpec);
return cipher.doFinal(decrypted.getBytes());
} catch (Exception ex) {
System.err.println(ex);
}
return null;
}
/**
* The constructor.
*/
private AES() {
try {
cipher = Cipher.getInstance("AES");
keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(KEY_SIZE);
secretKey = keyGenerator.generateKey();
byte[] raw = secretKey.getEncoded();
secretkeySpec = new SecretKeySpec(raw, "AES");
} catch (NoSuchAlgorithmException ex) {
System.err.println(ex);
} catch (NoSuchPaddingException ex) {
System.err.println(ex);
}
}
/**
* Runs the program.
*
* @param args
* The running arguments
*/
public static void main(String[] args) {
try {
new AES();
byte[] encrypted = encrypt(MESSAGE);
System.out.println("Encrypted: " + encrypted);
System.out.println("Decrypted: " + decrypt(encrypted));
} catch (Exception ex) {
System.err.println(ex);
}
}
}