es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué las reglas de Sonar Java:S5542 no permiten el uso del algoritmo PBEWithHmacSHA256AndAES_128?

Estoy construyendo una aplicación segura de almacenamiento de datos. Necesito encriptar y descifrar con una contraseña. He elegido el algoritmo “PBEWithHmacSHA256AndAES_128” para esto.

La regla de Sonar (java:S5542) no permite el uso de PBEWithHmacSHA256AndAES128. Según tengo entendido, PBEWithHmacSHA256AndAES128 es lo suficientemente seguro. No puedo encontrar información significativa sobre esto. ¿No es lo suficientemente seguro? Gracias.

Aquí está la Regla de Sonar. Aquí está mi código envuelto:

String ALGORITM = "PBEWithHmacSHA256AndAES<em>128";
SecureRandom random = new SecureRandom();
int ITERATE</em>COUNT = 65536;

byte[] iv = new byte[16];
new SecureRandom().nextBytes(iv);

byte[] salt = new byte[32];
new SecureRandom().nextBytes(salt);

IvParameterSpec ivParamSpec = new IvParameterSpec(iv);
PBEParameterSpec pbeParamSpec = new PBEParameterSpec(salt, ITERATE_COUNT, ivParamSpec);

AlgorithmParameters algorithmParameters = AlgorithmParameters.getInstance(ALGORITM);
algorithmParameters.init(pbeParamSpec);

String spec = new String(Base64.getEncoder().encode(algorithmParameters.getEncoded()));

PBEKeySpec spec = new PBEKeySpec(password.toCharArray());
SecretKeyFactory factory = SecretKeyFactory.getInstance(ALGORITM);
SecretKey secretKey = factory.generateSecret(spec);

AlgorithmParameters algorithmParameters = AlgorithmParameters.getInstance(ALGORITM);
algorithmParameters.init(Base64.getDecoder().decode(spec));

Cipher cipher = Cipher.getInstance(ALGORITM);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, algorithmParameters);

return new String(Base64.getEncoder().encode(cipher.doFinal(message.getBytes(StandardCharsets.UTF_8))));
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La regla de Sonar (java:S5542) que prohíbe el uso del algoritmo “PBEWithHmacSHA256AndAES_128” puede haber sido establecida debido a ciertas vulnerabilidades descubiertas en el algoritmo. Es importante destacar que, aunque pudo haberse considerado seguro en el pasado, pueden haberse descubierto nuevas vulnerabilidades con el tiempo que lo hacen menos seguro. Se recomienda utilizar algoritmos más fuertes y modernos para la encriptación, como “AES-GCM” o “ChaCha20-Poly1305”.

    Siempre es importante mantenerse al día con las mejores prácticas de seguridad más recientes y elegir algoritmos que sean considerados seguros por los estándares de la industria.

Comments are closed.