Hola,
Para empezar, léete este articulo de Wikipedia
(http://en.wikipedia.org/wiki/Sha-1 ) para que entiendas cada una de las
funciones hash de la familia SHA. Como tu mismo dices SHA-1 genera un
hash de 20 bytes (160 bits), como lo cual lo mas que puedes hacer crear
la representación ASCII que seria de 40 caracteres (dos caracteres por
cada byte), yo creo que le están pidiendo peras al olmo, cuando te dicen
que quieren un hash de 64 caracteres usando SHA-1. Si quieren un hash de
64 caracteres usen SHA-256.
Bye
Cesar Mendoza
http://www.kitiara.org
--
"All truth passes through three stages: first it is ridiculed,
then violently opposed and eventually, accepted as self-evident."
-- Schopenhauer
On Tue, Oct 30, 2007 at 04:07:57PM -0400, Antonio Leon wrote:
> 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
>
>
>