Bonjour a tous,
Voici mon bug, le genre de bug tellement simple, mais insolluble, vous savez, les bugs qui tiennent en 1 ligne et qui vous font peter un cable?
Enfin bref,
Tout le monde connait l'opérateur '+' (pas celui pour additionner des chiffre, celui pour mettre 2 chaine en une genre string3 := string1+string2, l'operateur de concatenation)
Donc, ce merveilleux petit '+' qui a toujour tres bien marché a décidé de me faire faux bond...
En effet, si j'essaie de faire
chaine_fraichement_decrypé+'mon texte trop cool';
et bah... Delphi renvoie la chaine_fraichement_décrypté sans le texte qui devrait s'y ajouter...
Voici mon code:
Fonction de decryptage:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 function rijndael_decrypt(Data:string;Key:string;IV:string):string; var DataWZ, KeyWZ, IVWZ : string; //WS = With zero (passé dans la fonction padwithzero) begin // Pad Key and IV with zeros as appropriate KeyWZ := PadWithZeros(key,KeySize); IVWZ := PadWithZeros(IV,BlockSize); // Decode the Base64 encoded string Data := Base64DecodeStr(DATA); if Length(KEY) <= 16 then form1.rijndael.Init(KeyWZ[1],128,@IVWZ[1]) else if Length(KEY) <= 24 then form1.rijndael.Init(KeyWZ[1],192,@IVWZ[1]) else form1.rijndael.Init(KeyWZ[1],256,@IVWZ[1]); // Decrypt the data form1.rijndael.DecryptCBC(Data[1],Data[1],Length(Data)); // Free the cipher and clear sensitive information //Cipher.Free; FillChar(KeyWZ[1],Length(KeyWZ),0); // Display the result Result := Data; end;Et la, le premier showmessage m'affiche le texte décrypté correctement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 blop := Rijndael_decrypt(Server[1],'clédecrypt','abcdefghijklmnopqrstuvwxyz'); showmessage(blop); showmessage(blop+'texte enplus ');
et le 2e affiche... la même chose![]()
Vous comprenez maintenant, tout le principe du bug tellement bête qu'il est insolluble?
J'espère que quelqun a deja rencontré ce probleme et pourra m'aider.
Merci a tous.
[edit]:ca ne pourrait pas venir , vous savez comme en C++ ou le dernier caractère de la chaine est un caractère NULL qui annonce la fin de la chaine, et peut être que ma fonction finit la chaine par un NULL et delphi s'arrete donc la... Enfin bon, je sais meme pas si en delphi ca marche ausis comme ca....
[Edit2] : Ca venait bien de la, ma chaine contenait 4 caractère bizzard a la fin, en les supprimmant, je peut a nouveau concaténé...
Ce post servira au moin au suivant qui aurra ce probleme...
Partager