GESTIONNAIRE DE FICHIERS DE CONFIGURATION

Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
- - Dernière réponse : cs_ezekiel62
Messages postés
10
Date d'inscription
vendredi 9 mai 2008
Statut
Membre
Dernière intervention
1 décembre 2008
- 23 juil. 2008 à 14:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41171-gestionnaire-de-fichiers-de-configuration

cs_ezekiel62
Messages postés
10
Date d'inscription
vendredi 9 mai 2008
Statut
Membre
Dernière intervention
1 décembre 2008
-
Ce projet semble fort interessant, mais ne se compile pas sous Delphi5...
erf...
Vais essayer d'étudier la source quand même
beau boulot...
sylvunix
Messages postés
93
Date d'inscription
mardi 11 avril 2006
Statut
Membre
Dernière intervention
4 mars 2009
-
f0xi,

Moi qui me disait perfectionniste, je pense que je suis largement battu ! Mais je prends note ...

J'aimerais faire évoluer cette classe en offrant la possibilité de stocker des données cryptées, comme un mot de passe par exemple, en utilisant un algorithme DES. Il y aurait un attribut ClefPrivee dans la classe et on pourrait utiliser le TId comme clef publique.

Qu'en penses-tu ?
f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26 -
petite modif qu'on peu appliquer a GenerateID :
(on a pas besoin d'une locale Tid puisqu'on as deja result)

function GenerateId : TId;
type
QuadWord = array[0..3] of word;
ArrChar = array[0..7] of char;
var
QW1,QW2 : QuadWord;
Uid : int64;
pB : ^byte;
N : integer;
begin
repeat
// Initialisation
QW1 := QuadWord( $5C951D1DE74FCC32 xor Random(High(int64)) );
QW2 := QuadWord( $0A5628FAD43E96CB xor Random(High(int64)) );

// Un algorithme simple de chiffrement
QW2[0] := word( (QW2[3] shl 13) or (QW1[0] shr 3) );
QW1[3] := word( (QW1[2] shl 15) or (QW2[3] shr 1) );
QW2[1] := word( (QW2[0] shl 9) or (QW1[1] shr 7) );
QW1[2] := word( (QW1[1] shl 12) or (QW2[2] shr 4) );
QW2[2] := word( (QW2[1] shl 5) or (QW1[2] shr 11) );
QW1[1] := word( (QW1[0] shl 8) or (QW2[1] shr 8) );
QW2[3] := word( (QW2[2] shl 2) or (QW1[3] shr 14) );
QW1[0] := word( (QW1[3] shl 4) or (QW2[0] shr 12) );

// Finalisation
Uid := int64(QW1) xor int64(QW2);

// Suppression des 00
pB := @Uid;
for N := 0 to 7 do begin
if pB^ <= $0F then pB^ := $0F+(random($E9)+1);
inc(pB);
end;

// Conversion du résultat en TId
result := IntToId(Uid);

// Si l'unicité du TId est vérifiée, on le mémorise en on quitte
if IdTable.IndexOf(result) = -1 then begin
IdTable.Add(Result);
Exit;
end;

// Répéter l'opération jusqu'à ce qu'un TId unique soit trouvé
until True;
end;
f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26 -
ouai c'est sur que le truc pourris des record pour les config c'est carrement pas exploitable a sec par d'autre logiciel...
sylvunix
Messages postés
93
Date d'inscription
mardi 11 avril 2006
Statut
Membre
Dernière intervention
4 mars 2009
-
f0xi,

Chapeau pour ta génération de TId, je n'avais même pas envisagé d'aller si loin.

Cependant, ta méthode de sauvegarde ne fonctionnera pas avec une arborescence d'objets, comme TConfiguration, auxquels sont attachés des listes de variables.

De plus, mes fichiers sont actuellement sauvegardés au format xml avec une structure propre donc effectivement réexploitables par d'autres logiciels.