| |
Membre enregistré 874 messages Popularité : +39 (51 votes) |
|
Posté le 30 juillet 2020 - 08:12 |
Bonjour à tous,
Je dois crypter des zones dites sensibles ( RGPD / Mdp / Infos bancaires ) dans des rubriques de fichiers HFCS ( Serveur ). Ces rubriques sont au format Texte.
J'utilise 2 petites procédures, en apparence simple, mais lors du décryptage, cela ne passe pas et renvoie toujours une chaîne vide. Le cryptage semble bon ( pas d'erreur ).
Ci-joint mes 2 procédures. Si vous aviez une idées lumineuse pour corriger le décryptage ? Un pb de format en binaire et chaîne peu être ?
Un grand merci pour votre aide. Courage à ceux qui ne sont pas en wac !
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Posté le 30 juillet 2020 - 14:06 |
les fonctions de cryptage retournent du binaire qui n'est pas stockable dans une zone texte.
Le plus simple est de crypter LE FICHIER ENTIER, et de hasher les mots de passe puis de les stocker en hexa ou base64 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 945 messages Popularité : +102 (110 votes) |
|
Posté le 30 juillet 2020 - 15:27 |
Bonjour @kick71 : copiez/colller votre code plutôt qu'une image se sera plus simple pour reproduire votre problème.
Procedure CryptageValeur(lavaleur est une chaîne):Buffer smessage est un Buffer = lavaleur bufclef est un Buffer = HashChaîne(HA_MD5_128,"maclef") bufcrypte est un Buffer = CrypteStandard(smessage,bufclef) RENVOYER bufcrypte
Procedure DecrypteValeur(lavaleur est un Buffer):Buffer bufclef est un Buffer = HashChaîne(HA_MD5_128,"maclef") bufdecrypte est un Buffer = DécrypteStandard(lavaleur,bufclef) RENVOYER bufdecrypte
Trace(DecrypteValeur(CryptageValeur("test")))
@Argus : une chaine peut très bien contenir des cractères dit "non imprimable"
maChaine est une chaîne = CryptageValeur("test") Trace(maChaine) // affiche : 0+BG\Õ³û·®1&ìóÞ¤ÒÅrwBŠHö¾{?ÅÊy myBuffer est un Buffer = maChaine maChaine = DecrypteValeur(myBuffer) Trace(maChaine) // affiche : test
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Posté le 30 juillet 2020 - 19:54 |
caractères non imprimables, oui, ZERO BINAIRE non, c'est la fin de chaine... et dans une chaine cryptée, à un moment ou à un autre, on va avoir un zéro binaire qui va nous faire perdre le reste des infos, d'ou le problème décrit.
Ce n'est pas pour rien que les fonctions de cryptages donnent leur résultat comme un BUFFER et pas une chaine. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 874 messages Popularité : +39 (51 votes) |
|
Posté le 31 juillet 2020 - 08:29 |
Bonjour Argus et Philippe, Merci pour vos réponses.
Quand je fais le cryptage et décryptage dans un même code oui, cela fonctionne et fonctionnais déjà avant. Mais quand je test sur une page de test les deux fonctions le décryptage ne fonctionne pas ! C'est bien la mon, soucis depuis le départ.
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 121 messages Popularité : +8 (14 votes) |
|
Posté le 31 juillet 2020 - 09:56 |
Bonjour, début de piste
Est ce que votre problème vient quand vous allez chercher la chaîne cryptée dans votre base et que vous voulez la décrypter ? Si oui vérifier la taille de la rubrique qui stock votre chaîne car celle-ci n'est peut-être pas complète.
-- Bon dev
Thibault |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 874 messages Popularité : +39 (51 votes) |
|
Posté le 31 juillet 2020 - 10:12 |
Bonjour Thibault, Dois-je la définir en Memo ? ou une taille définie ?
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 874 messages Popularité : +39 (51 votes) |
|
Posté le 31 juillet 2020 - 10:14 |
Dans ma page de test, les zones de saisies n'ont pas de taille prédéfinies et cela ne fonctionne pas non plus
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 121 messages Popularité : +8 (14 votes) |
|
Posté le 31 juillet 2020 - 19:12 |
Bonsoir, juste la taille dans la base et est ce que les champs sont de type mot de passe ?
-- Bon dev
Thibault |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 603 messages Popularité : +64 (70 votes) |
|
Posté le 01 août 2020 - 09:13 |
Bonjour,
HFSQL permet des rubriques de type mémo binaire. A tester pour stocker ces données...
-- Cordialement François |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 945 messages Popularité : +102 (110 votes) |
|
Posté le 01 août 2020 - 17:00 |
Bonjour @ Argus : Après la lecture de votre message je me suis traité d'idiot pour ne pas avoir pensé au 0x00. Pourtant je n'ai jamais eu de problème alors je me suis livré à ce petit test
UneChaine est une chaîne = "ABC"+Caract(0x0)+"DEF" Trace(UneChaine) Trace(Taille(UneChaine)) UneAutreChaine est une chaîne = UneChaine Trace(Taille(UneAutreChaine)) Une explication ?
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 213 messages Popularité : +12 (12 votes) |
|
Posté le 02 août 2020 - 03:51 |
Bonsoir,
Ma version, qui fonctionne pour ce que j'ai eu à traiter jusqu'à maintenant. Je sauvegarde les données cryptées sous leur format HEXA.
Dans mon cas, ce sont des paramètres système stockés dans un fichier texte. J'assume qu'une rubrique TEXTE aura le même comportement.
De mémoire, la transition vers UNICODE a résolu mes problèmes. De mémoire...
Deux procédures globales que je lance à la volée selon les besoins.
Procedure GlbSecCrypte(pChaîneÀCrypter est une chaîne = "", pCléCryptage est une chaîne = "")
SI pCléCryptage = "" ALORS RENVOYER "" uCléUNI est un Buffer = AnsiVersUnicode(pChaîneÀCrypter) uCléPwd est un Buffer = HashChaîne(HA_MD5_128, AnsiVersUnicode(pCléCryptage)) uCléCry est un Buffer = CrypteStandard(uCléUNI, uCléPwd, crypteAES128) RENVOYER BufferVersHexa(uCléCry, SansRegroupement)
Procedure GlbSecDécrypte(pChaîneÀDécrypter est une chaîne = "", pCléDéCryptage est une chaîne = "")
SI pChaîneÀDécrypter = "" OU pCléDéCryptage = "" ALORS RENVOYER "" uCléCry est un Buffer = HexaVersBuffer(pChaîneÀDécrypter) uCléPwd est un Buffer = HashChaîne(HA_MD5_128, AnsiVersUnicode(pCléDéCryptage)) uCléTxt est un Buffer = DécrypteStandard(uCléCry, uCléPwd, crypteAES128) RENVOYER UnicodeVersAnsi(uCléTxt)
Bon Dev.
Serge
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Posté le 03 août 2020 - 15:21 |
pas d'explication, non... mais j'ai constaté depuis longtemps que tant qu'on est : - dans le même code - en windev
on peut effectivement avoir un zero binaire qui ne pose pas problème dans une chaine (crypter et décrupter dnas une chaine, par exemple)
Par contre, dés qu'on commence à enregistrer, transférer, passer en paramètre et toute cette sorte de choses, ou changer d'environnement (mobile et autre) on perd ce qui est après le zero binaire.
C'est trompeur, et ca m'a fais rentrer dans le même mur il y a longtemps... Maintenant je sais ou est le mur et je contourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 945 messages Popularité : +102 (110 votes) |
|
Posté le 03 août 2020 - 23:35 |
Bonjour Effectivement c'est louche cette gestion du type chaine car ce code est parfaitement valide
UneChaine est une chaîne = "ABC" + Caract(0x0) + "DEF" + Caract(0x0) + "GHI" Trace(ExtraitChaîne(UneChaine, 2, Caract(0x0)))
Argus a écrit :
pas d'explication, non... mais j'ai constaté depuis longtemps que tant qu'on est : - dans le même code - en windev
on peut effectivement avoir un zero binaire qui ne pose pas problème dans une chaine (crypter et décrupter dnas une chaine, par exemple)
Par contre, dés qu'on commence à enregistrer, transférer, passer en paramètre et toute cette sorte de choses, ou changer d'environnement (mobile et autre) on perd ce qui est après le zero binaire.
C'est trompeur, et ca m'a fais rentrer dans le même mur il y a longtemps... Maintenant je sais ou est le mur et je contourne
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 874 messages Popularité : +39 (51 votes) |
|
Posté le 04 août 2020 - 09:26 |
Bonjour Monsieur Serge
J'ai adapté mon code, en fonction du votre pour le cryptage/décryptage. Cela passe mieux, enfin un peu plus loin, je m'explique.
Ces zones que je dois crypter et décrypter sont ensuite stockées dans un fichier HFCS. Le cryptage comme d'habitude ne pose aucun Pb, mais lors du décryptage ( récupération du fichier HFCS ), j'ai un soucis sur une rubrique ( IBAN ).
Je ne sais pas si le pb vient de la longueur de la rubrique stockée ou du typage. Celle-ci comme les autres sont de type chaîne, avec taille 150.
Lors du décryptage, j'ai le message suivant :
Une idée de votre part ?
Merci par avance. Si pas de soluce je vais voir à utiliser une autre méthode de cryptage que celle fournie par PCSOFT
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 874 messages Popularité : +39 (51 votes) |
|
Posté le 04 août 2020 - 10:02 |
Après test, le passage en "memo texte" semble résoudre mon pb !
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 213 messages Popularité : +12 (12 votes) |
|
Posté le 06 août 2020 - 05:20 |
@kick71,
La longueur totale de la chaîne cryptée peut facilement dépasser les 150 caractères. Le mémo texte semble d'ailleurs confirmer que c'était votre cas.
Un "Taille" sur la chaîne reçue au retour du cryptage le confirmerait.
------------------------------ À noter (1): Le zéro binaire (0x0) auquel Argus et Philippe Pasquali font référence ne passe pas avec mes procédures. J'ai testé en codant la valeur "en dur" pour confirmer.
Pour ce qui est de mes besoins à moi ça ne cause pas de soucis. La qualité de l'information est validée avant le cryptage.
À vous de voir si c'est un problème potentiel de votre côté.
------------------------------ À noter (2): Ma procédure permet de crypter une chaîne à blanc (""). Encore ici, une fonctionnalité qui répond à mes besoins.
À vous de voir si c'est un problème potentiel de votre côté.
Bon dev.
Serge
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 287 messages Popularité : +20 (72 votes) |
|
Posté le 13 août 2020 - 11:30 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 603 messages Popularité : +64 (70 votes) |
|
Posté le 13 août 2020 - 11:56 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 874 messages Popularité : +39 (51 votes) |
|
Posté le 13 août 2020 - 12:26 |
Oui François, les fichiers seront cryptés aussi ... Merci
A suivre
-- Christian - kick71 |
| |
| |
| | | |
|
| | |