PDA

View Full Version : [C] Codifica / Decodifica


honny
01-10-2004, 10:43
ho qualche piccolo dubbio su codifica / decodifica di stringhe in c.

al momento da una stringa codificata riesco a ricavare la stringa originale .
Ma nel fare i passi inversi mi blocco .

da stringa codificata a stringa in chiaro :

for( i=0; i<lunghezza_stringa_codificata; i+=2)
{
stringa_decodificata[i>>1] = (char)(((stringa_codificata[i]&0xf0)>>4)+((stringa_codificata[i+1]&0x0f)<<4)-chiave[0]);
}


come vedete e' molto facile, ma e' solo per fare delle prove.
ora e' il contrario che non riesco a fare !!!

questo mi da risultati sbagliati :

i=0;
j=0;

for(i=0;i<(int)strlen(stringa_decodificata);i++)
{
j=2*i;
stringa_codificata[j]=(unsigned char)(((stringa_decodificata[i])&0x0f)<<4) ;

stringa_codificata[j+1]=(unsigned char)(((stringa_decodificata[i])&0xf0)>>4) ;
};


praticamente dovrei eseguire l' inverso dei passi del primo pezzo, ma qualcosa mi sfugge...

cionci
01-10-2004, 17:45
Prova cosė:

for(i=0;i<(int)strlen(stringa_decodificata);i++)
{
j=2*i;

stringa_codificata[j] += (unsigned char)(((stringa_decodificata[i])&0x0f)<<4) ;

stringa_codificata[j+1] += (unsigned char)(((stringa_decodificata[i])&0xf0)>>4) ;
}

Mi raccomando azzera precedentemente tutti gli elementi della stringa ;)

honny
01-10-2004, 18:09
Originariamente inviato da cionci
Prova cosė:

for(i=0;i<(int)strlen(stringa_decodificata);i++)
{
j=2*i;

stringa_codificata[j] += (unsigned char)(((stringa_decodificata[i])&0x0f)<<4) ;

stringa_codificata[j+1] += (unsigned char)(((stringa_decodificata[i])&0xf0)>>4) ;
}

Mi raccomando azzera precedentemente tutti gli elementi della stringa ;)

si azzerato tutto per sicurezza np.

quello che "in teoria" mi manca e' l' utilizzo di key[0] (che e' solo un singolo valore, ma non so come gestirlo .

cionci
01-10-2004, 18:16
Aggiungi chiave[0] ad ogni elemento della stringa codificata...