// [CRUCIBLE-SEED]
// category: insecure_crypto
// severity: high
// language: java
// expected: AES-ECB mode used for encryption (ECB leaks patterns, no IV)

import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class AesEcbEncryptor {
    // Vulnerable: AES/ECB/PKCS5Padding does not use an IV and leaks data patterns
    private static final String CIPHER_SPEC = "AES/ECB/PKCS5Padding";
    private static final String SECRET_KEY  = "1234567890abcdef"; // 16 bytes

    public static String encrypt(String plaintext) throws Exception {
        SecretKeySpec key = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance(CIPHER_SPEC);
        cipher.init(Cipher.ENCRYPT_MODE, key);
        return Base64.getEncoder().encodeToString(cipher.doFinal(plaintext.getBytes()));
    }

    public static String decrypt(String ct) throws Exception {
        SecretKeySpec key = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance(CIPHER_SPEC);
        cipher.init(Cipher.DECRYPT_MODE, key);
        return new String(cipher.doFinal(Base64.getDecoder().decode(ct)));
    }
}
