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;
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 la, le premier showmessage m'affiche le texte décrypté correctement
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...