You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
import java.security.MessageDigest;
|
|
import java.util.Arrays;
|
|
import java.util.Base64;
|
|
|
|
import javax.crypto.Cipher;
|
|
import javax.crypto.spec.SecretKeySpec;
|
|
|
|
public class Decryptor
|
|
{
|
|
public static final String FLAG = "S+kUZtaHEYpFpv2ixuTnqBdORNzsdVJrAxWznyOljEo=";
|
|
private static class Password
|
|
{
|
|
private byte[] passHash;
|
|
|
|
public Password(char[] pass) throws Exception
|
|
{
|
|
MessageDigest digest = MessageDigest.getInstance("SHA-256");
|
|
this.passHash = Arrays.copyOf(digest.digest(new String(pass).getBytes("UTF-8")), 16);
|
|
}
|
|
|
|
public byte[] encrypt(byte[] msg) throws Exception
|
|
{
|
|
SecretKeySpec spec = new SecretKeySpec(passHash, "AES");
|
|
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
|
|
cipher.init(Cipher.ENCRYPT_MODE, spec);
|
|
return cipher.doFinal(msg);
|
|
}
|
|
|
|
public byte[] decrypt(byte[] msg) throws Exception
|
|
{
|
|
SecretKeySpec spec = new SecretKeySpec(passHash, "AES");
|
|
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
|
|
cipher.init(Cipher.DECRYPT_MODE, spec);
|
|
return cipher.doFinal(msg);
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) throws Exception
|
|
{
|
|
Password pass = new Password(System.console().readPassword("Enter password to decrypt flag: "));
|
|
System.out.println(new String(pass.decrypt(Base64.getDecoder().decode(FLAG.getBytes()))));
|
|
Thread.sleep(5000); //We did a heap dump right here.
|
|
}
|
|
}
|