Fuerza bruta se trata de probar todas las claves o contraseñas posibles. AES usa claves de al menos 128 bits (256 bits en su caso) para que falle la fuerza bruta: con la tecnología existente o previsible no es factible "probar" una proporción no risible del espacio de posible 128 bits claves, por no hablar de claves de 256 bits.
Un ataque de fuerza bruta más efectivo probaría posibles contraseñas que a menudo provienen de un espacio mucho más pequeño de posibles contraseñas (el espacio de contraseñas que una mente humana puede encontrar). Esto se denomina ataque de diccionario . Para que dichos ataques sean menos efectivos, querrá usar un poco de desaceleración en el proceso, ya sea en la transformación de contraseña a clave o en el cifrado en sí. Tiene más sentido, y es mucho mejor para la seguridad, hacer la desaceleración en la transformación de contraseña a clave, en lugar de en el cifrado. Consulte esta respuesta para obtener más información.
La desaceleración es solo una parte de la historia; También quieres un salt . Esto apunta a bcrypt o PBKDF2 . Y también necesitarás algo de integridad comprobada para derrotar los ataques activos (que son más realistas de lo que generalmente se supone). La combinación de un buen hashing de contraseña, cifrado simétrico e integridad comprobada es no es tan fácil como parece , por lo que debe confiar en un estándar existente y una biblioteca que hace el trabajo y ha sido examinado por muchos especialistas. Podría hacerlo peor que usar OpenPGP y Implementación de BouncyCastle Java .