DMo a écrit :Tu n'encrypte pas tout le bloc "properties" ou tout le "Text"??? Mais propriété par propriété, et ligne par ligne??? Dommage, non? Au final tu ne décrypte jamais une propriété seule ou une ligne seule? Ca protégerais mieux les données un cryptage du bloc entier??
Si, les
Properties et
Text sont traités chacun en tant que
StringList, comme dans XT3.
Ce service de cryptage pour les listes initialise le crypteur une seule fois, puis crypte chaque ligne à la suite.
Si tu as 10 lignes identiques, le résultat crypté sera 10 lignes différentes, puisque chaque ligne "suivante" bénéficie de l'état "déjà utilisé" du crypteur.
Si je cryptais les 10 lignes identiques avec le service réservé aux chaines, le crypteur serait réinitialisé pour chaque ligne et le résultat serait 10 lignes cryptées identiques.
C'est pour cela que je ne peux pas décrypter la 5ème ligne seulement, car elle a été cryptée en fonction des 4 premières.
Mon
Prop.Get fait donc un décryptage/recryptage complet :
Code : Tout sélectionner
//------------------------------------------------------------------------------
// XT400 / GetProp - Retourne la valeur d'une Property
//------------------------------------------------------------------------------
function TData.GetSProp(Prop: String): String;
begin
// Décryptage si besoin
if Self.Encrypted
then XSL_Crypt(Self.Properties, False);
// Récupération de la Property
Result := Self.Properties.Values[Prop];
// Recryptage si besoin
if Self.Encrypted
then XSL_Crypt(Self.Properties, True);
end;
//------------------------------------------------------------------------------