|
Started by Roumegou Eric, Nov., 07 2016 7:15 PM - 10 replies |
| |
| | | |
|
| |
Posted on November, 07 2016 - 7:15 PM |
Bonjour,
je veux crypter un mot de passe pour le stocker dans un .ini
Ceal fonctionnait très bien avec les fonctions Crypte jusqu'à ce que je constate les incompatibilités de cette fonction entre WD et WM
Donc il faut utiliser CrypteStandard et decrypteStandard; Cela n'est valable qu'à partir de la 20, donc je ne peux pas utiliser mon WD19 pour calculer ce mot de passe crypté.
Qu'à cela ne tienne, je le fais en WebDev21 Le pb est que l'exemple de la doc passe toujours par une clé qui vient d'un Hashchaine
Voilà mon code sMessage est un Buffer = MOTDEPASSE_ENCLAIR bufCle est un Buffer = HashChaîne(HA_MD5_128, CLE) bufCrypte est un Buffer = CrypteStandard(sMessage, bufCle, crypteAES128) ACOLLERDANSINI=CLE+" = "+BufferVersHexa(bufCrypte)
je convertis ensuite en Hexa et je peux crypter/ decrypter.
Sauf que la chaine en hexa que je récupère (ACOLLERDANSINI) bouge à chaque fois. Je suppose que cela vient de la fonction HashChaine Et moi je veux justement la coller dans un .ini, donc elle doit toujours donner la même chose.
J'ai donc essayé de mettre seulement CLE, sans la hascher Mais là j'ai une erreur sur la taille du buffer clé qui doit être à 128. La taille de la clé (24 bits) ne correspond pas à celle attendu (128 bits) pour l'algorithme.
Comment fixer cette taille ?
sachant que bufcle est un buffer sur 128 me renvoie : La taille de la clé (1024 bits) ne correspond pas à celle attendu (128 bits) pour l'algorithme.
Bon alors j'essaie ça sMessage est un Buffer = MOTDEPASSE_ENCLAIR //bufCle est un Buffer = HashChaîne(HA_MD5_128, CLE) bufCle est un Buffer sur 16 bufCle= CLE bufCrypte est un Buffer = CrypteStandard(sMessage, bufCle, crypteAES128) ACOLLERDANSINI=CLE+" = "+BufferVersHexa(bufCrypte)
plus d'erreur mais la valeur bouge à cahque execution
Merci de vos réponses. |
| |
| |
| | | |
|
| | |
| |
Posted on November, 08 2016 - 9:15 AM |
Bonjour, la nuit porte conseil et j'ai résolu mon problème. Je me réponds, ne serait ce que pour corriger qq conneries que j'ai dites. le pb n'est pas dans le Hashchaine et il semble que cela soit normal que le cryptestandard renvoie des valeurs différentes. En passant systématiquement par des chaines Unicode, j'arrive à la même chose en WB et WM. Maintenant c'est dit dans la doc. Dommage que leur exemple n'utilise pas ces chaines Unicode.
côté WEBDEV pour calculer mon mot de passe sMessage est un Buffer = MOTDEPASSE_ENCLAIR cleUnicode est une chaîne UNICODE cleUnicode=CLE bufCle est un Buffer = HashChaîne(HA_MD5_128, cleUnicode)
bufCrypte est un Buffer = CrypteStandard(sMessage, bufCle, crypteAES128) ACOLLERDANSINI=CLE+" = "+BufferVersHexa(bufCrypte)
et pour decrypter côté WM
/je vais récupérer le mot de passe dans le .ini pwdcrypt=INILit("PASSWORD",wprgid,"not found",ficini) CleUnicode,adecrypter est une chaîne UNICODE CleUnicode=wprgid adecrypter=pwdcrypt
bufCle est un Buffer = HashChaîne(HA_MD5_128, CleUnicode) bufCrypte est un Buffer bufCrypte=HexaVersBuffer(adecrypter) // Décryptage sRésultat est un Buffer = DécrypteStandard(bufCrypte, bufCle, crypteAES128) wsecret=sRésultat
Merci de votre attention
Roumegou Eric avait soumis l'idée :
Bonjour,
je veux crypter un mot de passe pour le stocker dans un .ini
Ceal fonctionnait très bien avec les fonctions Crypte jusqu'à ce que je constate les incompatibilités de cette fonction entre WD et WM
Donc il faut utiliser CrypteStandard et decrypteStandard; Cela n'est valable qu'à partir de la 20, donc je ne peux pas utiliser mon WD19 pour calculer ce mot de passe crypté.
Qu'à cela ne tienne, je le fais en WebDev21 Le pb est que l'exemple de la doc passe toujours par une clé qui vient d'un Hashchaine
Voilà mon code sMessage est un Buffer = MOTDEPASSE_ENCLAIR bufCle est un Buffer = HashChaîne(HA_MD5_128, CLE) bufCrypte est un Buffer = CrypteStandard(sMessage, bufCle, crypteAES128) ACOLLERDANSINI=CLE+" = "+BufferVersHexa(bufCrypte)
je convertis ensuite en Hexa et je peux crypter/ decrypter.
Sauf que la chaine en hexa que je récupère (ACOLLERDANSINI) bouge à chaque fois. Je suppose que cela vient de la fonction HashChaine Et moi je veux justement la coller dans un .ini, donc elle doit toujours donner la même chose.
J'ai donc essayé de mettre seulement CLE, sans la hascher Mais là j'ai une erreur sur la taille du buffer clé qui doit être à 128. La taille de la clé (24 bits) ne correspond pas à celle attendu (128 bits) pour l'algorithme.
Comment fixer cette taille ?
sachant que bufcle est un buffer sur 128 me renvoie : La taille de la clé (1024 bits) ne correspond pas à celle attendu (128 bits) pour l'algorithme.
Bon alors j'essaie ça sMessage est un Buffer = MOTDEPASSE_ENCLAIR //bufCle est un Buffer = HashChaîne(HA_MD5_128, CLE) bufCle est un Buffer sur 16 bufCle= CLE bufCrypte est un Buffer = CrypteStandard(sMessage, bufCle, crypteAES128) ACOLLERDANSINI=CLE+" = "+BufferVersHexa(bufCrypte)
plus d'erreur mais la valeur bouge à cahque execution
Merci de vos réponses.
-- Roumegou Eric |
| |
| |
| | | |
|
| | |
| |
Registered member 257 messages Popularité : +35 (37 votes) |
|
Posted on July, 21 2017 - 6:17 PM |
Code pour Crypter en Windev 22 et Décrypter en Windev Mobile 22 (exemple brute, a retravailler suivant votre besoin): Code Windev de cryptage
ChaineJSON est un Buffer = VariantVersJSON(LaReponse) fSauveBuffer("C:\Users\CLOART\Desktop\PORT_CLAIRE.json",ChaineJSON) CléDecryptageClaire est une chaîne ANSI = "kikoolol" CléDecryptageClaireHashé est un Buffer = HashChaîne(HA_MD5_128,CléDecryptageClaire) ChaineCrypté est un Buffer = CrypteStandard(ChaineJSON,CléDecryptageClaireHashé,crypteAES128) fSauveBuffer("C:\Users\CLOART\Desktop\PORT_CRYPTER.json",ChaineCrypté) Code Windev Mobile de décryptage
ChaineCrypté est un Buffer = fChargeBuffer("C:\Users\CLOART\Desktop\PORT_CRYPTER.json") CléDecryptageClaire est une chaîne ANSI = "kikoolol" CléDecryptageClaireHashé est un Buffer = HashChaîne(HA_MD5_128,CléDecryptageClaire) ChaineDecrypter est un Buffer = DécrypteStandard(ChaineCrypté,CléDecryptageClaireHashé,crypteAES128) fSauveBuffer("C:\Users\CLOART\Desktop\PORT_DECRYPTER.json",ChaineDecrypter)
-- Baptiste CLOART Freelance b.cloart@blv-tech.com 06.88.74.80.65 www.linkedin.com/in/cloart www.blv-tech.com |
| |
| |
| | | |
|
| | |
| |
Registered member 130 messages Popularité : +0 (4 votes) |
|
Posted on March, 13 2020 - 11:43 AM |
Bonjour,
Je viens de voir ce sujet posté, du coup, je reposte mon problème ici:
Je souhaite crypter un mot de passe puis l' envoyer dans un fichier .INI, avant de le décrypter par la suite, lorsqu' un utilisateur rentre son mot de passe. Le souci est que je n' arrive à récupérer ni le mot de passe crypté, ni la clé de décryptage.
Voici mon code: Dans la création du mot de passe d' abord:
sMessage est un Buffer = SAI_Mot_de_Passe bufCle = HashChaîne(HA_MD5_128, "mot de passe") bufCrypte est un Buffer = CrypteStandard(sMessage, bufCle, crypteAES128)
bufMDP est un Buffer = INIEcrit("Config","MotDePasse", bufCrypte, (SysRep(srAppData)) + "\config.ini")
Puis lorsque l' utilisateur entre à nouveau le mot de passe:
bufmdp est un Buffer = INILit("Config","MotDePasse", "",(SysRep(srAppData)) + "\config.ini")
bufRésultat est un Buffer = DécrypteStandard(bufmdp, bufcle, crypteAES128) bufmdp = SAI_Mot_de_passe SI bufmdp = bufRésultat ALORS Info("Mot de passe correct") SINON Info("Mot de passe incorrect.") FIN
J' ai l' erreur suivante: "La taille de la clé (0 bits) ne correspond pas à celle attendu (128 bits) pour l'algorithme."
J' ai essayé de réutiliser le code d' Eric, mais je m' embrouille plus qu' autre chose, hélas.
Quelqu' un aurait-il une idée ?
Cordialement, |
| |
| |
| | | |
|
| | |
| |
Registered member 473 messages Popularité : +20 (20 votes) |
|
Posted on March, 13 2020 - 4:56 PM |
Le probleme doit venir de l'ecriture dans le .ini il faut convertir en hexa
INIEcrit("Config","MotDePasse", BufferVersHexa(bufCrypte,SansRegroupement), (SysRep(srAppData)) + "\config.ini")
et bien sur meme chose en decryptage
bufmdp est un Buffer = HexaVersBuffer(INILit("Config","MotDePasse", "",(SysRep(srAppData)) + "\config.ini") |
| |
| |
| | | |
|
| | |
| |
Registered member 130 messages Popularité : +0 (4 votes) |
|
Posted on March, 16 2020 - 9:59 AM |
Bonjour stef,
Merci pour votre réponse, hélas, j' ai toujours le même problème :/ Une solution avait été donnée sur un autre forum, en comparant deux hash différents (celui enregistré et celui à la saisie). Le souci est que mon programme va être integré sur un serveur SMTP et que ce dernier ne reconnait pas les hash :/ |
| |
| |
| | | |
|
| | |
| |
Registered member 130 messages Popularité : +0 (4 votes) |
|
Posted on March, 16 2020 - 11:05 AM |
Update: Alors, j' ai tenté une autre méthode. J' ai créé un bouton permettant de tester le mot de passe directement après la création de ce dernier: Résultat: ça marche. En revanche, si je ferme la session et que je la relance sur la fenêtre demandant le mot de passe, j' ai l' erreur: ""La taille de la clé (0 bits) ne correspond pas [...]"
Bizarre... Pourtant, on ne peut pas vraiment parler de persistance des données car le mot de passe est lu dans le fichier.INI qui est bien mis à jour, je suis perdu, je dois vous avouer |
| |
| |
| | | |
|
| | |
| |
Registered member 473 messages Popularité : +20 (20 votes) |
|
Posted on March, 16 2020 - 11:10 AM |
Je viens de faire le test en simulateur et sur Android avec le code suivant et cela fonctionne parfaitement, Je précise que je suis en 24
sMessage est une chaîne = SAI_Saisie BufmMdpClair est un Buffer = sMessage bufCle est un Buffer= HashChaîne(HA_MD5_128, "mot de passe") bufCrypte est un Buffer = CrypteStandard(BufmMdpClair, bufCle, crypteAES128)
INIEcrit("Config","MotDePasse", BufferVersHexa(bufCrypte,SansRegroupement), fRepEnCours + "\config.ini")
bufmdp est un Buffer = HexaVersBuffer(INILit("Config","MotDePasse", "",fRepEnCours + "\config.ini"))
bufRésultat est un Buffer = DécrypteStandard(bufmdp, bufCle, crypteAES128)
SI sMessage = bufRésultat ALORS Info("Mot de passe correct") SINON Info("Mot de passe incorrect.") FIN |
| |
| |
| | | |
|
| | |
| |
Registered member 130 messages Popularité : +0 (4 votes) |
|
Posted on March, 16 2020 - 11:46 AM |
Je suis sur la 25, mais je ne pense pas que ça change quelque chose ou du moins, je n' espère pas. Vous mettez tout votre code dans une même page ? Car pour moi, ça ne marche toujours pas, ni pour la configuration initiale, ni pour la dernière avec le test "à chaud" :/ |
| |
| |
| | | |
|
| | |
| |
Registered member 473 messages Popularité : +20 (20 votes) |
|
Posted on March, 16 2020 - 12:56 PM |
Si ca peut être un bug 25. Pour verifier tu crees un nouveau projet avec une fenetre qui contient juste un champ de saisie et un bouton Tu colles le code que jai donné dans le bouton et tu testes si tu as encore ton message d'erreur c'est lié a la 25 |
| |
| |
| | | |
|
| | |
| |
Registered member 130 messages Popularité : +0 (4 votes) |
|
Posted on March, 16 2020 - 1:00 PM |
anonyme a écrit : > Je suis sur la 25, mais je ne pense pas que ça change quelque chose ou du moins, je n' espère pas. Vous mettez tout votre code dans une même page ? Car pour moi, ça ne marche toujours pas, ni pour la configuration initiale, ni pour la dernière avec le test "à chaud" :/
Complètement oublié la clé... Et pourtant, ce n' est pas faute d' avoir lu et relu le message d' erreur :/ Du coup, j' ai renseigné aussi la clé dans le .ini et ça marche. Mais est-ce la bonne solution ? L' idéal ne serait-il pas d' isoler la clé du mdp au cas où ? Ça devrait faire l' objet d' une petite réflexion de ma part... En tout cas merci stef, pour le coup de main |
| |
| |
| | | |
|
| | | | |
| | |
|