Crypter Data Paradox Table

Signaler
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007
-
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007
-
Bonjour à vous,

Je suis entrain de créer ma première application avec une BD Paradox.

J'ai trouvé un algorithme pour encrypter les data que j'envoie dedans. J'explique comment je procède :

Premièrement, voici  ce que j'utilise

J'utilise une Base de Données Paradox nommé Users.DB
Un DBGrid pour l'affiche de certaines informations de ma BD.
Des Champs DBEdit pour modifier ou entrer des informations dans la BD.

Donc voici comment j'encrypte : Je rempli les champs et ensuite j'appuie sur Sauvegarder.

Voici le code j'ai seulement garder l'essentiel pour vous faciliter la tache !:

procedure TForm1.Image3Click(Sender: TObject);
begin

DBEdit1.Text := Encode(DBEdit1.Text, SecurityString);
DBEdit2.Text := Encode(DBEdit2.Text, SecurityString);

Users.Post;

DBEdit1.Text := Decode(DBEdit1.Text, SecurityString);

DBEdit2.Text := Decode(DBEdit2.Text, SecurityString);
end;

N.B.: Encode, Decode (Ce sont des fonctions que j'ai créé pour le cryptage)
function Decode(Data, SecurityString: string)

Cependant, il y a un petit problème. Comme les données entrent maintenant Crypté dans la BD, dans la DBGrid, les données sont aussi cryptés donc dans mon DBGrid je ne vois que des ZnHksdlK/nsJkL (exemple :P) Donc ma question, comment je fais pour Decrypter mes données de ma BD avant que la DBGrid chargent les informations de la BD ?

Il est important que la BD soit toujours Crypté, meme pendant l'execution du programme.

Merci de m'aider !!

62 réponses

Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

tu peux pas m'aider a finaliser ca .. il ne reste que le decryptage pour completer mon application à 100% !

Je comprends pas l'utilité du SetTheText.
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

Users.Fields[1].OnGetText:=DecodePWDEx(Users.Fields[1].OnGetText, SecurityPass);
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
Ben voilà

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

bon ca marche pas avec cette commande.

Comme ceci ca fonctionne ... je peux compiler .. cependant dans mon tgrid .. la colonne 1 et bien il n'Y a rien d'écris dedans !

procedure TForm1.SetTheText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text := DecodePWDEx(Text, SecurityPass);
end;

procedure TForm1.UsersAfterOpen(DataSet: TDataSet);
begin
 Users.Fields[1].OnGetText:=SetTheText;
end;
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
la colonne 1 est en fait la colonne d'indice 0 (Field[0])
essaie de faire
text:='TOTO';

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

ouais ca écris TOTO sur toute la colonne

Cependant, moi je veux voir mes champs décryptés :)
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

PS - Oui j avais compris l'indice 0 .. je vais me faire une boucle FOR quand le decryption va fonctionner !

 :)
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
procedure TForm1.UsersAfterOpen(DataSet: TDataSet);
var i:integer;
begin
for i:=0 to users.fields.count-1 do
 Users.Fields[i].OnGetText:=SetTheText;
end;

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

et pour decrypter, je met quoi dans la procédure SetTheText ? (Tous mes champs sont crypter)

Exemple de comment j'utilise ma procedure normalement :

La methode pour decrypter un champ edit par exemple avec ma procedure :

Edit1.Text := Decode(Edit1.Text, SecurityPass);

Donc je fias quoi avec ma procedure SetTheText poru decrypter les champs de ma BD ?

Text := ????????????????????????
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Bon, on reprend tout depuis le début !
Vire ces codes qui sont trop compliqués pour toi et qui n'apporte rien à la compréhension.

Ensuite, fais un double clic sur le composant TTable (ou TQuery) ou un clic droit et sélectionne "Sélecteur de champs...".
A partir de là, si rien n'apparait dans la fenêtre qui vient de s'ouvrir, effectue un clic droit et sélectionne "Ajouter tous les champs". Delphi crée alors ce qui s'appelle des composants champs persistants.
Sélectionne le champ que tu souhaites décrypter à l'exécution et, dasn l'onglet "évènements" de l'inspecteur d'objets, double clique sur l'évènement OnGetText.
Delphi crée alors un squelette de code du type :

procedure TForm1.Table1SpeciesNoGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin

end;

C'est entre le begin et le end que tu vas saisir le code qui va déchiffrer le texte qui s'affichera dans les contrôles visuels.

procedure TForm1.Table1SpeciesNoGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  if DisplayText then
    Text := decrypte(Text, clé);
end;

Explication : seulement s'il y a besoin d'afficher (if DisplayText...) car dans les autres cas cela ne servirait à rien de déchiffrer si ce n'est pour ralentir l'application , tu affectes à Text (paramètre passé en "var" donc modifiable) la valeur décryptée, issue de la base de données.

C'est pas plus compliqué que ça et il n'y a nul besoin de déclarer de types procéduraux et d'affecter de pointeurs de méthodes !!! Attends d'avoir un peu plus de "métier" pour te lancer dans ce genre de manoeuvres...

Que demander de plus ?
Vive la simplicité de Delphi

May Delphi be with you !


<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

voici ce que j'ai fait :

procedure TForm1.UsersNomGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
if DisplayText then
Text := DecodePWDEx(Text, SecurityPass);
end;

Résultat : Toute la Colonne Nom est en blanc alors que tous les autres champs sont crypté (ce qui est normal car je joue seulement avec la colonne NOM)

Cependant, les champs de la colonne NOM ne devrait-il pas etre décryptés ?

J'ai aussi essayé sans le if Display et j'ai le meme resultat !

Désolé d'avoir de l'ambition ... apres ce programme la et bien je ne vous demanderai plus d'aide.
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
"tous les autres champs sont crypté "
As-tu bien supprimé les code que tu avais ajoutés auparavant ?

procedure TForm1.UsersAfterOpen(DataSet: TDataSet);
var i:integer;
begin
for i:=0 to users.fields.count-1 do
 Users.Fields[i].OnGetText:=SetTheText;
end;

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

oui, tout ce que j'avais mis avant est supprimé (en commentaire) les declarations sont aussi en commentaire. et les reference sont enlevés !
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

Quelqu'un a une solution fonctionnelle ?
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

On est pret de la solution .. aidez-moi ... :)
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Es-tu ab-so-lu-ment sur du résultat renvoyé par ta fonction de décryptage ?

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

ABSOLUMENT CERTAIN !

J'ai fait une petite application juste poru tester ma fonction de cryptage/decryptage !

un champ edit ... j'écris ce que je veux, ensuite j'appuie sur le bouton .. celui-ci m'envoie la string que j'ai ecris dans le edit.text et me le montre en format CRYPTÉ et ensuite un autre popup me le montre en format normal .. donc la decryption fonctionne bien !

PS - je travaille toujours avec la meme variable. Pour pas que tu pense que j'affiche une version de ma string qui n'A jamais ete crypté !
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Question bête mais qui m'a déjà joué un vilain tour : la valeur décryptée ne contiendrait-elle pas de caractères nul (#0) en première position ?
As-tu testé ta fonction uniquement sur le champ qui pose problème ?

Quant aux autres colonnes de la grille ou contrôles visuels, il semblerait qu'ils ne soient pas connectés sur les bons champs de la table s'ils apparaissent cryptés alors qu'ils ne le devraient pas. Qu'en est-il du contenu de ta table ? Peux-tu vérifier avec l'explorateur de données si le contenu est "normal" ?

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

DelphiProg, aurais-tu msn ? au pire je pourrais t'envoyer mes sources.
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

Pour répondre a ta question, non je n'ai pas de valeur nulle.

et peut importe le champs que je tente de decrypter avec "TA" méthode et bien ca vient en blanvh !