PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV Mobile 2024 → fonction Crypte
fonction Crypte
Iniciado por FX Sion, 25,mar. 2006 23:19 - 3 respuestas
Publicado el 25,marzo 2006 - 23:19
PCsoft a doté la fonction crypte d'une nouvelle contante cypteANSI permettant d'obtenir un cryptage analogue à celui de WINDEV.

Je ne parviens pas à obtenir un resultat correct. Avez vous testé cette nouvelle constante ,
Publicado el 30,junio 2006 - 18:17
J'essaie d'encoder en base64, mais je n'ai déjà pas les mêmes résultats en
émulation que sur pocket.
(évidemment, il faut transformer la chaine du pocket en ANSI ...)
Et en comparant par rapport à un script sur une page web, aucun des 2
résultats ne serait correct.

phr64 = Crypte(buf,"",crypteAucun, vrai)
....

Quelqu'un aurait-il un début de piste.

J'essaie de coder les fonctions 'encode' 'decode'
mais un autre problème se pose :
comment fait-on pour faire un décalage de bits ( en C : MaVar >> 2) ???
(sinon toujours pareil, je transforme tout en binaire et je le fais
moi-même)

Merci


"FX Sion" <xavier.sion@laposte.net> a écrit dans le message de news:
44259b9d$1@news.pcsoft.fr...
PCsoft a doté la fonction crypte d'une nouvelle contante cypteANSI
permettant d'obtenir un cryptage analogue à celui de WINDEV.

Je ne parviens pas à obtenir un resultat correct. Avez vous testé cette
nouvelle constante ,

Publicado el 27,agosto 2009 - 23:46
Cela fonctionne pour la fonction crypte. Nous avons bien maintenant la même chaine sur windows et windows mobile, mais cela ne fonctionne pas pour la fonction decrypte.
Et cela me pose un gros pb. J'ai absolument besoin de cette fonction. C'est une contrainte du client.
Quelqu'un a une idée ?
J'ai essayer plein de chose mais ca ne fontionne pas
Publicado el 28,agosto 2009 - 15:40
J'ai trouvé la solution sur un forum. La voici :

PROCEDURE Base64Decode(pData est chaîne)
BASE64 est chaîne = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
TABLEAU_BASE64BIN est un tableau de 64 chaîne sur 6

Xlc_car est un caractère
Xls_Bin est chaîne
Xle_AscCode est entier sans signe sur 1 octet
Xls_result est chaîne
Xle_taille_pdata est entier
Xle_taille_bin est entier
i est entier

// création du tableau Binaire
POUR i=1 A 64
TABLEAU_BASE64BIN[i] = DecToBin(i-1)
FIN

// extrait le caractère et cherche sa correspondance valeur binaire/hexa
Xle_taille_pdata = Taille(pData)
i = 1
BOUCLE
Xlc_car = Milieu(pData, i, 1)
SI Position(BASE64, Xlc_car) <> 0 ALORS
Xls_Bin += TABLEAU_BASE64BIN[Position(BASE64, Xlc_car)]
FIN
i++
SI i > Xle_taille_pdata ALORS SORTIR
FIN


// prend la chaine binaire et recode le caractère en décimal
Xle_taille_bin = Taille(Xls_Bin)
i = 1
BOUCLE
SI Taille(Milieu(Xls_Bin, i, 8 )) < 8 ALORS
SORTIR
SINON
Xle_AscCode = BinToDec(Milieu(Xls_Bin, i, 8 ))
Xls_result += Caract(Xle_AscCode)
FIN
i += 8
SI i > Xle_taille_bin ALORS SORTIR
FIN


RENVOYER Xls_result

PROCEDURE BinToDec(CodeBin est chaîne)
RENVOYER Val(CodeBin, 2)

PROCEDURE DecToBin(xlpar_binaire est entier)
XL_reste est un booléen
Xl_resultat est chaîne

TANTQUE xlpar_binaire <> 0
XL_reste = modulo(xlpar_binaire,2)
Xl_resultat = XL_reste + Xl_resultat
// renvoie uniquement partie entière
xlpar_binaire = xlpar_binaire / 2
FIN
Xl_resultat = Répète("0",6-Taille(Xl_resultat))+Xl_resultat

RENVOYER Xl_resultat