```javaimport javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.PBEKeySpec;import javax.crypto.spec.SecretKeySpec;import java.nio.charset.StandardCharsets;import java.security.spec.KeySpec;import java.util.Base64;
public class AESChallenge {    private static final String AES_ALGORITHM = "AES";    private static final String PBKDF2_ALGORITHM = "PBKDF2WithHmacSHA256";    private static final int ITERATIONS = 10000;    private static final int KEY_SIZE = 256;
    private static SecretKey generateKey(String password, byte[] salt) throws Exception {        KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, ITERATIONS, KEY_SIZE);        SecretKeyFactory factory = SecretKeyFactory.getInstance(PBKDF2_ALGORITHM);        SecretKey tmp = factory.generateSecret(spec);        return new SecretKeySpec(tmp.getEncoded(), AES_ALGORITHM);    }
    private static String encrypt(String plainText, SecretKey key) throws Exception {        Cipher cipher = Cipher.getInstance(AES_ALGORITHM);        cipher.init(Cipher.ENCRYPT_MODE, key);        byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));        return Base64.getEncoder().encodeToString(encryptedBytes);    }
    public static void main(String[] args) {        String flag = "REDACTED";        String password = "aesiseasy";        byte[] salt = "saltval".getBytes(StandardCharsets.UTF_8);
        try {            SecretKey key = generateKey(password, salt);            String encryptedFlag = encrypt(flag, key);            System.out.println("Encrypted Flag: " + encryptedFlag);        } catch (Exception e) {            e.printStackTrace();        }    }}
```
Thanks to Github copilot, "I" wrote a decryption method.
```javaprivate static String decrypt(String encryptedText, SecretKey key) throws Exception {    Cipher cipher = Cipher.getInstance(AES_ALGORITHM);    cipher.init(Cipher.DECRYPT_MODE, key);    byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);    byte[] decryptedBytes = cipher.doFinal(encryptedBytes);    return new String(decryptedBytes);}```
![image](https://github.com/jeromepalayoor/ctf-archive-hub/assets/63996033/ba7ae105-6932-4b9c-b81d-81ec42d1c9fa)
Flag: `n00bz{1_d0n't_l1k3_a3s_ch4ll3ng3_d0_y0u_lik3?_41703148ed8347adbe238ffbdbaf5e16}`