Page 1 sur 1

Mar 09/07/2013 - Actualités

Posté : mar. 9 juil. 2013 21:41
par Xavier
Cryptage AES


Le premier dossier a été crypté, ainsi que l'identifiant qu'il contenait.
(Pour le moment le mot de passe est codé en dur dans l'application...)

L'encodage en Base64 fait que le résultat ressemble à un cryptage XT3 (SHA-1 + RC6) mais c'est bien un cryptage XT4 (SHA-512 + AES-256). :)
FirstAES.png

Re: Mar 09/07/2013 - Actualités

Posté : mar. 9 juil. 2013 23:40
par Denis
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??

Re: Mar 09/07/2013 - Actualités

Posté : mer. 10 juil. 2013 08:28
par Xavier
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;

//------------------------------------------------------------------------------

Re: Mar 09/07/2013 - Actualités

Posté : mer. 10 juil. 2013 12:34
par Denis
ok, du coup, quel interet de conserver les balises pour chaque property / line??? Ne peux-tu pas crypter tout le bloc sous "Properties" et "Text", balises incluses? EN écrivant cela, je m'interroge sur l'intéret réel de ma demande ;-)

Re: Mar 09/07/2013 - Actualités

Posté : mer. 10 juil. 2013 18:02
par Xavier
DMo a écrit :ok, du coup, quel interet de conserver les balises pour chaque property / line??? Ne peux-tu pas crypter tout le bloc sous "Properties" et "Text", balises incluses? EN écrivant cela, je m'interroge sur l'intéret réel de ma demande ;-)
Je n'étais pas sûr ce matin que ta question posait sur ce point.

Sur une donnée en mémoire, j'ai une TStringList, qui est intégralement cryptée et c'est tout. Les balises visibles dans le fichier ne sont bien que l'enveloppe XML qui est rajoutée lors de l'écriture du fichier, elles n'ont aucun besoin d'être cryptées en tant que "conteneurs" de données cryptées.

Je me souviens de ta demande de passer les Properties [A=1] en balise <A>1</A> au lieu de <Prop>A=1</A>.
J'avais refusé car cela aurait cassé ma mécanique qui utilise des Properties [.A=1] écrivables pour debug mais non lues, car cela impliquait l'écriture de balises <.A>1</.A> incompatibles.
Cela aurait demandé un cryptage de la balise et de sa valeur différents du cryptage "interne" de la StringList.