Forza brutale riguarda il provare tutte le possibili chiavi o password. AES utilizza chiavi di almeno 128 bit (256 bit nel tuo caso) in modo che la forza bruta fallisca: non è fattibile, con la tecnologia esistente o prevedibile, "provare" una proporzione non ridicola dello spazio del possibile 128-bit chiavi, per non parlare delle chiavi a 256-bit.
Un attacco di forza bruta più efficace proverebbe le potenziali password che spesso provengono da uno spazio molto più piccolo di possibili password (lo spazio delle password che una mente umana può inventare). Questo è chiamato un attacco dizionario . Per rendere meno efficaci tali attacchi, si vorrà utilizzare un certo rallentamento nel processo, sia nella trasformazione da password a chiave, sia nella crittografia stessa. Ha più senso, ed è molto meglio per la sicurezza, fare il rallentamento nella trasformazione da password a chiave, piuttosto che nella crittografia. Vedi questa risposta per i dettagli.
Il rallentamento è solo una parte della storia; vuoi anche un salt . Questo punta a bcrypt o PBKDF2 . E avrai anche bisogno di una certa integrità controllata, per sconfiggere gli attacchi attivi (che sono più realistici di quanto si pensi normalmente). Combinando un buon hashing della password, la crittografia simmetrica e l'integrità verificata è non è facile come sembra , quindi dovresti fare affidamento su uno standard e una libreria esistenti che svolgono il lavoro ed è stato esaminato da molti specialisti. Potresti fare peggio dell'uso di OpenPGP e del Implementazione di BouncyCastle Java .