Gracias César, lo probé y funciona tal como me indicas, pero sin
haber terminado me cambiaron la seña, y ahora debo utilizar, con las mismas
condiciones, el algoritmo SHA-1, que genera un hash de 20 bytes fijos, pero
debo generar una cadena de caracteres de longitud 64
¿Es posible realizar la misma operación? ¿O debo utilizar otra
clase?
Gracias nuevamente
De: SoloJava@...
[mailto:SoloJava@...] En nombre de Cesar Mendoza
Enviado el: martes, 30 de octubre de 2007 03:31 p.m.
Para: SoloJava@...
Asunto: Re: [SoloJava] Algoritmo SHA-256
Hola,
Lo primero que tienes que entender es que SHA-256 retorna un hash de 32
bytes fijos. Lo que tu quieres es un string con la representación de
cada byte en notación hexadecimal, eso trasforma tu arreglo de 32 bytes
en un string de 64 caracteres. Para obtener ese resultado te recomiendo
que uses la librería codec de Apache. Usando la librería de Apache el
código seria:
String s = "01234567890123456789012345678901234567890123456789";
MessageDigest alga = MessageDigest.getInstance("SHA-256");
byte[] digesta = alga.digest(s.getBytes());
org.apache.commons.codec.binary.Hex hex = new org.apache.commons.codec.binary.Hex();
String hashAsString = new String(hex.encode(digesta));
System.out.println(hashAsString);
Bye
Cesar Mendoza
http://www.kitiara.org
--
Reality is that which refuses to go away
when I stop believing in it.
--Philip K. Dick
On Mon, Oct 29, 2007 at 07:42:10PM -0500, Antonio Leon wrote:
> Buenas noches.
>
> Para una aplicación, requiero de realizar encriptacion con el algoritmo
SHA-256 y producir un resultado de longitud fija de 64 caracteres, tengo
entendido que es posible, pero lo logro dar con la solución, a lo mas que he
llegado es a producir un resultado de 42 caracteres.
>
> Anexo el código que tengo hasta ahora
>
> String s = "01234567890123456789012345678901234567890123456789";
> MessageDigest alga = MessageDigest.getInstance("SHA-256");
> byte[] digesta = alga.digest(s.getBytes());
> System.out.println(new sun.misc.BASE64Encoder().encodeBuffer(digesta));
>
> Salida: gwPmf2+Fx5ZeVsvIw+dM8WdEvHmSpHkJ3FzTcJ64WEw=
>
> ¿Alguna idea de que estoy haciendo mal?
>
> Gracias
>
>
>
> Antonio León
>
> ---------------------------------
>
> ¡Sé un mejor asador!
> Aprende todo sobre asados en:
> http://telemundo.yahoo.com/promos/mejorasador.html