PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2025 → cryptage decryptage entre wdm et api
cryptage decryptage entre wdm et api
Débuté par Laurent HERMANN, 18 aoû. 2025 14:13 - 15 réponses
Membre enregistré
342 messages
Posté le 18 août 2025 - 14:13
bonjour,

mon app mobile wdm s'authentifie au travers d'une API en wd

j'envoie via entete http le mdp crypté

extrait coté wdm
taV["password"] = cryptepass(SAI_Password)
PROCEDURE INTERNE cryptepass(spassword)
bufMsg est un Buffer = spassword
bufclé est un Buffer = HashChaîne(HA_HMAC_SHA_256, "Cm*i8RRZ*h88")
RENVOYER Encode(CrypteStandard(bufMsg,bufclé,crypteAES256),encodeBASE64SansRC)
FIN

....
POUR TOUT sVal, sClé de taV
restReq..Entête[sClé] = UTF8(sVal)
FIN
restRep est un restRéponse = RESTEnvoie(restReq)
....



coté API
// decrypte le password reçu
sPassANSI est une chaîne ANSI = Entête("password")
bufRecept est un Buffer = Decode(sPassANSI,encodeBASE64SansRC)
bufclé est un Buffer = HashChaîne(HA_HMAC_SHA_256, "Cm*i8RRZ*h88")
sLePass est une chaîne = DécrypteStandard(bufRecept,bufclé,crypteAES256)
//
...

SI REQ_Appli_identification.HashPass<>Hasher(sLePass) ALORS
//traitement des retours à wdm


Procedure Hasher(sTxt)

RENVOYER BufferVersHexa(HashChaîne(HA_SHA3_512,ChaîneVersUTF8(sTxt + Sel)),SansRegroupement,SansLigne)



ce code fcte tres bien entre mon app desktop wd et l'api mais avec wdm la variable sLePass est vide

je ne comprends pas pourquoi ?? merci

--
LH
Membre enregistré
909 messages
Posté le 18 août 2025 - 20:16
Bonjour. Dans WM, le champ contenant le mot de passe est Unicode par défaut, tandis que dans votre API, ce qui est envoyé vous est reçu en ANSI. Avez-vous vérifié cette partie ?

Rubén

--
https://depot.pcsoft.fr/search.awp…

https://www.linkedin.com/in/rub%C3%A9n-s%C3%A1nchez-pe%C3%B1a-7a868212/
https://play.google.com/store/apps/details…
Membre enregistré
342 messages
Posté le 19 août 2025 - 07:56
merci Ruben

coté wdm, j'ai crypté avec unicodeversansi le champ mot de passe
mais ça n'a rien changé

--
LH
Membre enregistré
342 messages
Posté le 19 août 2025 - 08:10
j'ai fait ce test dans une fenêtre wdm:

sPass est une chaîne = cryptepass("monmotdepasse")


sPassANSI est une chaîne = sPass
bufRecept est un Buffer = Decode(sPassANSI,encodeBASE64SansRC)
bufclé est un Buffer = HashChaîne(HA_HMAC_SHA_256, "Cm*i8RRZ*h88")
sLePass est une chaîne = DécrypteStandard(bufRecept,bufclé,crypteAES256)

slapssh est une chaîne =Hasher(sLePass)

PROCEDURE INTERNE cryptepass(spassword)
bufMsg est un Buffer = spassword
bufclé2 est un Buffer = HashChaîne(HA_HMAC_SHA_256, "Cm*i8RRZ*h88")
RENVOYER Encode(CrypteStandard(bufMsg,bufclé2,crypteAES256),encodeBASE64SansRC)
FIN


PROCEDURE INTERNE hasher(sTxt)
Sel est une chaîne = "vm7UffT7m#PY$T@EeiEk5rdqM$^iNcHqTWX%uC*j*Tt@$uX#6UZoswKjxdF3"
RENVOYER BufferVersHexa(HashChaîne(HA_SHA3_512,ChaîneVersUTF8(sTxt + Sel)),SansRegroupement,SansLigne)
FIN


et je recupere bien le bon mot de passe haché

--
LH
Message modifié, 19 août 2025 - 08:11
Membre enregistré
342 messages
Posté le 19 août 2025 - 11:03
mais si j'implemente , dans l'api le mot de passe haché n'est pas lu

--
LH
Membre enregistré
530 messages
Posté le 19 août 2025 - 13:47
quand tu appelles l'api depuis wdm tu recois quoi dans
sPassANSI est une chaîne ANSI = Entête("password")
Membre enregistré
342 messages
Posté le 19 août 2025 - 15:43
je viens de tester entre ce qui est envoyé en entete et ce que reçoit l'api
c'est identique

password = I4CBG1HUUuzX6TTZKxfI+sIyxH8F0xQA5dXLV8kh5Ski4XgKezW9OKgLjqUVYSK2RS5Dq4wFU8UifiuJoOPB1BcIGDs8UBqFKkAl7DTfpIY=


stef1811 a écrit :
quand tu appelles l'api depuis wdm tu recois quoi dans
sPassANSI est une chaîne ANSI = Entête("password")


--
LH
Membre enregistré
342 messages
Posté le 19 août 2025 - 15:51
je pense que la syntaxe sLePass est une chaîne = DécrypteStandard(bufRecept,bufclé,crypteAES256) me pose pb car ne renvoie rien...

--
LH
Membre enregistré
3 710 messages
Posté le 19 août 2025 - 18:01
Laurent HERMANN a écrit :
je pense que la syntaxe sLePass est une chaîne = DécrypteStandard(bufRecept,bufclé,crypteAES256) me pose pb car ne renvoie rien...

--
LH

Sur mobile il faut écrire
sLePass est une chaîne ANSI

Ainsi tu est sur de ne pas être en unicode
Membre enregistré
342 messages
Posté le 20 août 2025 - 07:44
bjr popoy, en fait ça ne change rien...

je redecris :
cote wdm
sPass est une chaîne = cryptepass("monmotdepasse")

PROCEDURE INTERNE cryptepass(spassword)
bufMsg est un Buffer = spassword
bufclé2 est un Buffer = HashChaîne(HA_HMAC_SHA_256, "Cm*i8RRZ*h88")
RENVOYER Encode(CrypteStandard(bufMsg,bufclé2,crypteAES256),encodeBASE64SansRC)
FIN


coté api windows :
sPassANSI est une chaîne ANSI = sPass
bufRecept est un Buffer = Decode(sPassANSI,encodeBASE64SansRC)
bufclé est un Buffer = HashChaîne(HA_HMAC_SHA_256, "Cm*i8RRZ*h88")
sLePass est une chaîne = DécrypteStandard(bufRecept,bufclé,crypteAES256)

slapssh est une chaîne =Hasher(sLePass)

PROCEDURE INTERNE hasher(sTxt)
Sel est une chaîne = "vm7UffT7m#PY$T@EeiEk5rdqM$^iNcHqTWX%uC*j*Tt@$uX#6UZoswKjxdF3"
RENVOYER BufferVersHexa(HashChaîne(HA_SHA3_512,ChaîneVersUTF8(sTxt + Sel)),SansRegroupement,SansLigne)
FIN


mon soucis est que la variable coté api sLepass est vide alors que tout passe bien entre wdm et api

--
LH
Membre enregistré
342 messages
Posté le 20 août 2025 - 07:51
j'ai refait un test en lisant la variable bufRecept coté api :voici ce que contient la variable
{"rlo":".��_�x��ϳ����PH j�,^�<\n>8� �_޳�WW�M|���ϣ���&Jv�W��7��Eɮ�l;��}�f9d��=ey�

--
LH
Membre enregistré
342 messages
Posté le 20 août 2025 - 08:06
ce qui me semble logique vu que c'est du binaire...

mais ensuite sLepass est vide
j'ai lu que decryptestandard renvoi un buffer, j'ai testé mais ça ne change rien
--
LH
Message modifié, 20 août 2025 - 08:17
Membre enregistré
530 messages
Posté le 20 août 2025 - 13:28
Résultat : Buffer binaire

•Chaîne vide ("") en cas d'erreur. Pour plus de détails sur l'erreur, utilisez la fonction ErreurInfo.

pb de decryptage du msg passé en parametre
Tu testes si erreur detectée dans ErreurInfo ?
Message modifié, 20 août 2025 - 13:29
Membre enregistré
3 710 messages
Posté le 20 août 2025 - 15:47
Salut,
J'ai écrit côté mobile donc wdm
sPass est une chaîne ansi

Le mieux est de le préciser sur toutes les chaînes
Que ce soit en windev(Windows), windev mobile (Android Ios) et webdev
Ton retour ressemble à du json
Message modifié, 20 août 2025 - 15:50
Membre enregistré
3 710 messages
Posté le 20 août 2025 - 15:47
Salut,
J'ai écrit côté mobile donc wdm
sPass est une chaîne ansi

Le mieux est de le préciser sur toutes les chaînes
Que ce soit en windev(Windows), windev mobile (Android Ios) et webdev
De plus, ton retour ressemble à du json
Message modifié, 20 août 2025 - 15:51
Membre enregistré
342 messages
Posté le 20 août 2025 - 15:54
bonne idée
voici l'erreur coté api
"le decryptage du message a echoué. la phase de finalisation de l'algorithme de cryptage /decryptage a echoué"

nous voilà propre :)
ce qui explique bine ma variable vide

pourtant ce même code fcte trés bien entre la version destop (wd) et l'api





--
LH