Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

211
Vistas
No se puede obtener un resultado similar en Java como CryptoJS.HmacSHA256 produce el resultado en JavaScript

Estoy tratando de escribir el código Java para producir un resultado similar al de la siguiente secuencia de comandos Java para result1...

 var dataToSign = "message"; var secret = "secret"; var orgId = "abcd"; var secureKey = "tZvFPMrVkgQ5m5jj"; var result1 = orgId+ CryptoJS.HmacSHA256(dataToSign, secret); console.log( result1)

el valor de result1 es: abcd8b5f48702995c1598c573db1e21866a9b825d4a794d169d7060a03605796360b

Ahora quiero generar el mismo resultado usando el código Java.

 String orgId = "abcd"; String key="secret"; String dataToSign = "message"; Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256"); sha256_HMAC.init(secret_key); String result2=orgId+java.util.Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(dataToSign.getBytes("UTF-8"))); System.out.println(result2);

Estoy obteniendo el valor de result2 es: abcd[B@39538f9e i19IcCmVwVmMVz2x4hhmqbgl1KeU0WnXBgoDYFeWNgs=

pero quiero resultado2 similar a resultado1;

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Debe imprimir los números hexadecimales, no la cadena codificada en base64.

Eche un vistazo a esto , luego use bytesToHex :

 byte[] result2 = sha256_HMAC.doFinal(dataToSign.getBytes("UTF-8")); System.out.println(orgId + bytesToHex(result2));
about 4 years ago · Juan Pablo Isaza Denunciar

0

Solución 1: Deberías esta línea

 String result2=orgId+java.util.Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(dataToSign.getBytes("UTF-8")));

A

 String result2 = orgId + getHex(sha256_HMAC.doFinal(dataToSign.getBytes("UTF-8")));

Función getHex como se muestra a continuación

 static final String HEXES = "0123456789ABCDEF"; public static String getHex(byte[] raw) { if (raw == null) { return null; } final StringBuilder hex = new StringBuilder(2 * raw.length); for (final byte b : raw) { hex.append(HEXES.charAt((b & 0xF0) >> 4)) .append(HEXES.charAt((b & 0x0F))); } return hex.toString(); }

Solución 2: Deberías esta línea

 var result1 = orgId+ CryptoJS.HmacSHA256(dataToSign, secret);

A

 var result1 = orgId+ CryptoJS.HmacSHA256(dataToSign, secret); var result2 = CryptoJS.enc.Base64.stringify(result1)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda