/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static SecretKey secretKey;
private static void generateSecretKey() {
try {
secretKey
= new SecretKeySpec
(SecretKeyFactory.
getInstance("PBKDF2WithHmacSHA256").
generateSecret(new PBEKeySpec
(new String(Base64.
getDecoder().
decode("VHJpYW5nbGUgb2YgQW5kcm9pZA=="), StandardCharsets.
UTF_8).
toCharArray(),
new byte[32],
65536,
256)).
getEncoded(),
"AES"); }
}
{
generateSecretKey();
Cipher instance = Cipher.getInstance("AES/CBC/PKCS5PADDING");
instance.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(new byte[16]));
System.
out.
println(new String(instance.
doFinal(Base64.
getDecoder().
decode("Fd60z2/WC/boWFPcZ1pbJW5v3eOjGcR3vajE7rPNN67pxtzYfNRYCE2XoTeOlw1uGYO24cqV/QnvD2rykyXzxQ==")))); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZheC5jcnlwdG8uQ2lwaGVyOwppbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleTsKaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXlGYWN0b3J5OwppbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuSXZQYXJhbWV0ZXJTcGVjOwppbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuUEJFS2V5U3BlYzsKaW1wb3J0IGphdmF4LmNyeXB0by5zcGVjLlNlY3JldEtleVNwZWM7CmltcG9ydCBqYXZhLm5pby5jaGFyc2V0LlN0YW5kYXJkQ2hhcnNldHM7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXByaXZhdGUgc3RhdGljIFNlY3JldEtleSBzZWNyZXRLZXk7CgoJICAgIHByaXZhdGUgc3RhdGljIHZvaWQgZ2VuZXJhdGVTZWNyZXRLZXkoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgc2VjcmV0S2V5ID0gbmV3IFNlY3JldEtleVNwZWMoU2VjcmV0S2V5RmFjdG9yeS5nZXRJbnN0YW5jZSgiUEJLREYyV2l0aEhtYWNTSEEyNTYiKS5nZW5lcmF0ZVNlY3JldChuZXcgUEJFS2V5U3BlYyhuZXcgU3RyaW5nKEJhc2U2NC5nZXREZWNvZGVyKCkuZGVjb2RlKCJWSEpwWVc1bmJHVWdiMllnUVc1a2NtOXBaQT09IiksIFN0YW5kYXJkQ2hhcnNldHMuVVRGXzgpLnRvQ2hhckFycmF5KCksIG5ldyBieXRlWzMyXSwgNjU1MzYsIDI1NikpLmdldEVuY29kZWQoKSwgIkFFUyIpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgfQogICAgfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWdlbmVyYXRlU2VjcmV0S2V5KCk7CgkJQ2lwaGVyIGluc3RhbmNlID0gQ2lwaGVyLmdldEluc3RhbmNlKCJBRVMvQ0JDL1BLQ1M1UEFERElORyIpOwoJCWluc3RhbmNlLmluaXQoQ2lwaGVyLkRFQ1JZUFRfTU9ERSwgc2VjcmV0S2V5LCBuZXcgSXZQYXJhbWV0ZXJTcGVjKG5ldyBieXRlWzE2XSkpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihuZXcgU3RyaW5nKGluc3RhbmNlLmRvRmluYWwoQmFzZTY0LmdldERlY29kZXIoKS5kZWNvZGUoIkZkNjB6Mi9XQy9ib1dGUGNaMXBiSlc1djNlT2pHY1IzdmFqRTdyUE5ONjdweHR6WWZOUllDRTJYb1RlT2x3MXVHWU8yNGNxVi9RbnZEMnJ5a3lYenhRPT0iKSkpKTsKCX0KfQ==