tomz24
Messages postés46Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention16 août 2007
-
21 juin 2007 à 15:38
tomz24
Messages postés46Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention16 août 2007
-
16 août 2007 à 21:01
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
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.
dominique.stock
Messages postés436Date d'inscriptionvendredi 7 novembre 2003StatutMembreDernière intervention 8 octobre 20087 26 juin 2007 à 17:31
procedure TForm1.UsersAfterOpen(DataSet: TDataSet);
var i:integer;
begin
for i:=0 to users.fields.count-1 do
Users.Fields[i].OnGetText:=SetTheText;
end;
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 26 juin 2007 à 21:41
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/
tomz24
Messages postés46Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention16 août 2007 26 juin 2007 à 21:51
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.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 26 juin 2007 à 21:57
"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/
tomz24
Messages postés46Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention16 août 2007 28 juin 2007 à 16:35
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é !
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 28 juin 2007 à 22:46
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/