desplazamiento de bits
Publicado por kaleb (20 intervenciones) el 12/11/2007 13:25:26
Hola Tengo una duda con los operadores de desplazamiento de bits.
Tengo el siguiente codigo en C++
char* xmix(const char* password, int[] buffer, int[] key)
{
for(int i = 0; i<64; i+=8)
{
int c=*password;
if(c!=0)
password++;
buffer[i]^=c>>7&1;
buffer[i+1]^=c>>6&1;
buffer[i+2]^=c>>5&1;
buffer[i+3]^=c>>4&1;
buffer[i+4]^=c>>3&1;
buffer[i+5]^=c>>2&1;
buffer[i+6]^=c>>1&1;
buffer[i+7]^=c&1;
}
:::::
}
Entiendo que hay esta manejando direcciones de memoria cuando hace las operaciones de desplazamiento de bits.
Yo en java lo he puesto así :
final int xmix(int password, int[] buffer, int[] key)
{
for(int i = 0; i<64; i+=8)
{
int c=password;
if(c!=0)
password++;
buffer[i]^=c>>7&1;
buffer[i+1]^=c>>6&1;
buffer[i+2]^=c>>5&1;
buffer[i+3]^=c>>4&1;
buffer[i+4]^=c>>3&1;
buffer[i+5]^=c>>2&1;
buffer[i+6]^=c>>1&1;
buffer[i+7]^=c&1;
}
initialize(key);
encrypt(buffer);
return password;
}
Pero esto no esta bien. Ademas creo que debería de recibir un string y no un int.
Alguna sugerencia.
Tengo el siguiente codigo en C++
char* xmix(const char* password, int[] buffer, int[] key)
{
for(int i = 0; i<64; i+=8)
{
int c=*password;
if(c!=0)
password++;
buffer[i]^=c>>7&1;
buffer[i+1]^=c>>6&1;
buffer[i+2]^=c>>5&1;
buffer[i+3]^=c>>4&1;
buffer[i+4]^=c>>3&1;
buffer[i+5]^=c>>2&1;
buffer[i+6]^=c>>1&1;
buffer[i+7]^=c&1;
}
:::::
}
Entiendo que hay esta manejando direcciones de memoria cuando hace las operaciones de desplazamiento de bits.
Yo en java lo he puesto así :
final int xmix(int password, int[] buffer, int[] key)
{
for(int i = 0; i<64; i+=8)
{
int c=password;
if(c!=0)
password++;
buffer[i]^=c>>7&1;
buffer[i+1]^=c>>6&1;
buffer[i+2]^=c>>5&1;
buffer[i+3]^=c>>4&1;
buffer[i+4]^=c>>3&1;
buffer[i+5]^=c>>2&1;
buffer[i+6]^=c>>1&1;
buffer[i+7]^=c&1;
}
initialize(key);
encrypt(buffer);
return password;
}
Pero esto no esta bien. Ademas creo que debería de recibir un string y no un int.
Alguna sugerencia.
Valora esta pregunta


0