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.

Cuando codifique la contraseña, siempre devuelva un valor nulo.

Quiero codificar mi contraseña usando una clave de encriptación, pero obtengo un valor nulo al imprimir la contraseña codificada. Adjunto mi código a continuación:

public class FirstJava {

    private static final Long ENCRYPTION_KEY = 29190210908917L;

    public static String encrypt(String strToEncrypt, byte[] key) {
        if (strToEncrypt == null)
            return strToEncrypt;
        try {
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            final SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
            return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes()));
        } catch (Exception exception) {
            System.out.println("ERROR");
        }
        return null;
    }


    public static void main(String[] args) {
        String password = "12345678";
        byte[] arr = String.valueOf(ENCRYPTION_KEY).getBytes();
        String passwordEnc = encrypt(password,arr);
        System.out.println("passwordEnc============= "+passwordEnc);
    }
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Es posible que el problema esté en la variable ENCRYPTION_KEY, ya que no se convierte correctamente en un arreglo de bytes. En lugar de utilizar “String.valueOf(ENCRYPTION_KEY).getBytes()”, intenta utilizar “ByteBuffer.allocate(Long.BYTES).putLong(ENCRYPTION_KEY).array()” para convertir adecuadamente el valor Long en un arreglo de bytes.

    Entonces, reemplaza esta línea:

    byte[] arr = String.valueOf(ENCRYPTION_KEY).getBytes();

    con:

    byte[] arr = ByteBuffer.allocate(Long.BYTES).putLong(ENCRYPTION_KEY).array();

    Esto debería codificar correctamente la contraseña utilizando la clave de encriptación.

Comments are closed.