class ManualAESSaltDescryptor extends AESSaltDecryptor {
    @Override
    protected char[] getPassword() {<FILL_FUNCTION_BODY>}

}

        char[] password = null;
        Console console = System.console();
        if (console != null) {
            password = console.readPassword("Password for config decryption: ");
        } else {
            // for IDE testing
            System.out.print("Password for config decryption: ");
            Scanner sc = new Scanner(System.in);
            if (sc.hasNext()) {
                password = sc.next().toCharArray();
            }
            sc.close();
        }
        if (password == null || password.length == 0) {
            throw new RuntimeException("The decrypted password of configuration files should not be empty.");
        }
        return password;
    
<methods>public void <init>() ,public java.lang.String decrypt(java.lang.String) <variables>private static final int ITERATIONS,private static final int KEY_SIZE,private static final java.lang.String STRING_ENCODING,private javax.crypto.Cipher cipher,private static final byte[] iv,javax.crypto.spec.IvParameterSpec ivSpec,private static final Logger logger,private Map<java.lang.String,javax.crypto.spec.SecretKeySpec> secretMap