Bonjour

J'ai créé une fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
void CreateRC4Key(unsigned char* hashedMsg, int sizeMsg, unsigned char** hKey, int* sizeKey);
qui me renvoit sans problème une clé de session créée à partir d'un password hashé (un key BLOB ou un unsigned char*).

Ensuite j'ai une fonction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
void EncryptRC4(unsigned char* msg, int* sizeMsg, unsigned char* key, int* sizeKey, unsigned char** out)
qui crypte un message grâce à cette clé sans problème !


Le problème vient du fait que mon algorithme de cryptage PDF me demande d'appeler 19 fois en boucle cette méthode (output devient input) en changeant la clé à chaque itération.

la modification à apporter à la clé est la suivante :
"use an encryption key generated by taking each byte of the encryption key obtained first and performing a XOR operation between that byte and the single-byte value of the iteration counter (from 1 to 19)"
Algo qui vient du Pdf Reference 1.5 pgf 101 algo 3.3 :
http://partners.adobe.com/public/dev...rence15_v6.pdf
(attention le fichier pdf fait plus de 1000 pages donc faire un "save as")


Donc mon problème est le suivant :
- Comment modifier correctement la clé de cryptage ?
(j'ai cru comprendre qu'il y avait un header à ne pas modifier)

j'ai essayé de le faire mais je n'ai pas réussi à isoler les bytes "utiles" de la clé à modifier et j'ai donc tout modifié, ce qui donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
for &#40;int i = 1; i <= 19; i++&#41;
&#123;
     for &#40;int j = 0; j < sizeKey ; j++&#41;
         &#40;&#40;BYTE*&#41;newKey&#41;&#91;j&#93; = &#40;&#40;BYTE*&#41;key&#41;&#91;j&#93; ^ &#40;&#40;BYTE*&#41;&i&#41;&#91;0&#93;;
&#125;
Le résultat est que la fonction CryptImportKey ne fonctionne plus du tout


Merci d'avance


(en espérant que cette fois ma question est plus sensée )