256-битное Java AES-шифрование на основе пароля

Мне нужно реализовать 256-битное шифрование AES, но все примеры, которые я нашел в Интернете, используют «KeyGenerator» для генерации 256-битного ключа, но я бы хотел использовать свой собственный пароль. Как я могу создать свой собственный ключ? Я попытался дополнить его до 256 бит, но затем я получаю сообщение об ошибке, говорящее о том, что ключ слишком длинный. У меня установлен патч неограниченной юрисдикции, так что это не проблема :)

То есть. KeyGenerator выглядит так ...

// Get the KeyGenerator
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128); // 192 and 256 bits may not be available

// Generate the secret key specs.
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();

Код взят здесь

РЕДАКТИРОВАТЬ

Я на самом деле дополнял пароль до 256 байтов, а не бит, что слишком долго. Ниже приведен код, который я использую сейчас, когда у меня есть немного опыта с этим.

byte[] key = null; // TODO
byte[] input = null; // TODO
byte[] output = null;
SecretKeySpec keySpec = null;
keySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
output = cipher.doFinal(input)

Биты "TODO" нужно делать самостоятельно :-)