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