PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Tester si un fichier est crypté ou pas
Tester si un fichier est crypté ou pas
Iniciado por alain.defonpre, 19,feb. 2019 14:46 - 4 respuestas
Publicado el 19,febrero 2019 - 14:46
Bonjour à tous,

Pour mes fichiers externes je sais utiliser les fonctions fCrypte(...) et fDéCrypte(...), pas de soucis.
On peut tester au moment du cryptage ou du décryptage si l'opération c'est bien déroulée, pas de soucis également.

Mais par contre par la suite, comment peut on tester l'état d'un fichier, est t'il crypté ou pas, comment faire, je n'ai pas trouvé.
En fait c'est pour éviter de crypter deux fois de suite un même fichier car sinon il n'est plus "décryptable" et ce même avec
le bon mot de passe...

Une idée ?
D'avance merci de vos réponses.

Alain
Miembro registrado
1.640 mensajes
Publicado el 19,febrero 2019 - 15:40
Salut,

J'avais pris l'habitude de rajouter un marqueur a l’intérieur de chaque fichier.
Je rajoutais par exemple une séquence de 10 octets a la fin de chaque fichier crypté. Cette séquence est bien-sur toujours la même.

ainsi, avant de crypter un fichier, il me suffisait de verifier les 10 derniers octets, si ils correspondait a ma séquence, je savais que le fichier était déjà crypté.

Bien sur du coup, avant de décrypter, je retirais les 10 derniers octets, pour retrouver mon fichier crypté d'origine.

1) Buffer = Récupération des 10 derniers octets du fichiers
2) SI Buffer <> Clé (Fichier non crypté)
3) Cryptage du fichier
4) Ajout de la clé sur 10 octets a la fin du fichier crypté.
Publicado el 19,febrero 2019 - 17:57
François merci de votre réponse.

Mais je vois pas bien comment votre procédure fonctionne.
Notamment comment se passe l'ajout et la suppression de la séquence des 10 octets, auriez-vous un "bout de code" svp.

En fait je crée et protège les fichiers de bases de données aux formats fichier/extension propre à mon soft en les cryptant en dehors de ce dernier.
Puis elles intègrent mon soft, qui lui pour les exploiter, les décryptent/ouvrent, les lis, les referment/recryptent.

C'est donc au moment ou le fichier BDD va être "Recryptées" que je souhaite le tester et ce pour ne pas le rendre par erreur illisible.

Alain
Miembro registrado
1.640 mensajes
Publicado el 20,febrero 2019 - 10:11
voici un petit exemple :
Procedure CrypteFichier(sCheminComplet est une chaîne)
gbufCleCryptage est un buffer = "TaCleDeCryptage"
soit buf = fChargeBuffer(sCheminComplet)
soit nTaille = Taille(buf)
SI nTaille > 0 ALORS // si le fichier est bien chargé et mémoire et non vide
SI BufferVersEntier(buf[[nTaille-4 À]]) = 560354815 ALORS // ICI 560354815 est notre clé de vérification
bufNewbuf est un Buffer = buf[[1 À nTaille-5]]
bufNewbuf = DécrypteStandard(bufNewbuf,gbufCleCryptage)
fSupprime(sCheminComplet)
fSauveBuffer(sCheminComplet,bufNewbuf)
SINON
bufNewbuf est un Buffer = buf
bufNewbuf = CrypteStandard(bufNewbuf,gbufCleCryptage)
bufNewbuf+= 0x216655FF (= 560354815)
fSupprime(sCheminComplet)
fSauveBuffer(sCheminComplet,bufNewbuf)
FIN
FIN


A adapter suivant tes besoin. C'est un vieux de bout de code mal optimisé.
Pour le coup ya que 4 octets
Mensaje modificado, 20,febrero 2019 - 10:14
Publicado el 20,febrero 2019 - 13:05
Merci François,

Je vais l'essayer en l'adaptant bien sûr.

Encore merci

Alain