C++

cs_zizota Messages postés 10 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 6 janvier 2009 - 5 janv. 2009 à 23:25
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 6 janv. 2009 à 12:07
bonsoir,
j'aime bien ke kelkun m'explique ça:
int padLen, index;
 padLen
= (index < 56) ? (56 - index) : (120 - index);

merci d'avance

8 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
6 janv. 2009 à 00:35
Si index < 56 ALORS (?) on assigne à padLen le résultat de 56-index SINON (:) on assigne à padLen le résultat de 120-index

C'est équivalent à

int padLen;

if(index < 56) padLen = (56-index);
else padLen = (120-index);

C++ (@++)<!--
0
cs_zizota Messages postés 10 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
6 janv. 2009 à 00:41
merci bcppp
0
cs_zizota Messages postés 10 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
6 janv. 2009 à 00:52
svp, vous pouvez m'expliquer cette mthode:
void MD5_CTX::Encode
(unsigned char *output, unsigned long int *input,unsigned int len)

{

 unsigned int i, j;

 

 for (i 0, j 0; j < len; i++, j += 4) {

  output[j] = (unsigned char)(input[i] & 0xff);

  output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);

  output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);

  output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);

 }

}
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
6 janv. 2009 à 11:28
Hello,
ça, c'est un décalage de bits. Pour output[j+1], par exemple, tu prends la valeur input[i]. Tu décalage les bits de 8 vers la droite, ce qui revient à "supprimer" l'octet de poids faible. Sur cette valeur obtenue, tu ne gardes que l'octet de poids faible avec le masque 0xFF.
Si j'écris en octet les valeurs:
input[i]=o1,o2,o3,o4 (4 octets)
input[i] >> 8 = 0,o1,o2,o3
(input[i] >> 8) & 0xFF = o3

Même principe pour les autres

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 janv. 2009 à 11:36
input[i] est une variable de 4 octets


output[j] = le premier octet de input[i]
  output[j+1] =
le second octet de input[i]


  output[j+2] =
le 3e octet de input[i]


  output[j+3] =
le 4e octet de input[i]
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
6 janv. 2009 à 11:39
Effectivement, dit comme ça, c'est ptet plus clair

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
cs_zizota Messages postés 10 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
6 janv. 2009 à 11:55
mais pourquoi  input[i] est une variable de 4 octets car on a input[i] est de type unsigned long  int qui est codé  sur 2 octets??
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
6 janv. 2009 à 12:07
Ah non, c'est bien codé sur 4 octets un long int

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous