OVH Cloud OVH Cloud

Base 64 et MD5

3 réponses
Avatar
jean saint jalmes
Bonjour,

Je dois utiliser l'algorithme MD5 et l'encodage "base 64" dans un échange
http avec un serveur distant sous VB6.0

Connaissez-vous une API ou un contrôle qui peremette cela ?

Merci pour votre aide

Jean

3 réponses

Avatar
jean-marc
"jean saint jalmes" wrote in
message news:
Bonjour,

Je dois utiliser l'algorithme MD5 et l'encodage "base 64" dans un échange
http avec un serveur distant sous VB6.0

Connaissez-vous une API ou un contrôle qui peremette cela ?



Hello,

pour Base64, c'est facile. Voici 2 fonctions qui codent et décodent.
Ces fonctions ont été écrites par NG, qui les avait posté ici même,
dans le post:
http://groups.google.be/group/microsoft.public.fr.vb/browse_thread/thread/1c
20a2e2c9404101/5ee852a49d2c472b?qºse+64&rnum=4#5ee852a49d2c472b

je les reproduit ici in extenso:
Public Function Base64Encode$(S$)
Dim b() As Byte, Out() As Byte, i&, j&, L&, Enc() As Byte
If Len(S) = 0 Then Exit Function
Enc StrConv("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
vbFromUnicode)
L = Len(S): b = StrConv(S, vbFromUnicode)
ReDim Preserve b(0 To (UBound(b) 3) * 3 + 2)
ReDim Preserve Out(0 To (UBound(b) 3) * 4 + 3)
For i = 0 To UBound(b) - 1 Step 3
Out(j) = Enc(b(i) 4): j = j + 1
Out(j) = Enc((b(i + 1) 16) Or (b(i) And 3) * 16): j = j + 1
Out(j) = Enc((b(i + 2) 64) Or (b(i + 1) And 15) * 4): j = j + 1
Out(j) = Enc(b(i + 2) And 63): j = j + 1
Next i
For i = 1 To i - L: Out(UBound(Out) - i + 1) = 61: Next i
Base64Encode = StrConv(Out, vbUnicode)
End Function


Public Function Base64Decode$(S$)
Dim b() As Byte, Out() As Byte, i&, j&, L&, Enc() As Byte, Dec(0 To 255)
As Byte
If Len(S) = 0 Then Exit Function
Enc StrConv("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
vbFromUnicode)
For i = 0 To 255: Dec(i) = 64: Next
For i = 0 To 63: Dec(Enc(i)) = i: Next
L = Len(S): b = StrConv(S, vbFromUnicode)
ReDim Preserve Out(0 To (L 4) * 3 - 1)
For i = 0 To UBound(b) Step 4
Out(j) = (Dec(b(i)) * 4) Or (Dec(b(i + 1)) 16): j = j + 1
Out(j) = (Dec(b(i + 1)) And 15) * 16 Or (Dec(b(i + 2)) 4): j = j + 1
Out(j) = (Dec(b(i + 2)) And 3) * 64 Or Dec(b(i + 3)): j = j + 1
Next i
If b(L - 2) = 61 Then j = 2 Else If b(L - 1) = 61 Then j = 1 Else j = 0
ReDim Preserve Out(0 To UBound(Out) - j)
Base64Decode = StrConv(Out, vbUnicode)
End Function




Pour MD5, il doit suffire de 5 minutes de Googlage pour trouver

une implémentation correcte en VB.



--

Jean-marc
Avatar
jean saint jalmes
Merci mille fois Jean Marc pour cette information.

Le codage et le decodage Base64 fonctionne bien.

Il me reste à trouver l'info pour MD5. J'ai cherché sur google mais je n'ai
encore rien trouvé de très précis

Encore merci, Jean

"jean saint jalmes" a écrit :

Bonjour,

Je dois utiliser l'algorithme MD5 et l'encodage "base 64" dans un échange
http avec un serveur distant sous VB6.0

Connaissez-vous une API ou un contrôle qui peremette cela ?

Merci pour votre aide

Jean


Avatar
jean saint jalmes
Jean Marc,

Pour info, je viens de trouver une info sur l'API "CrytoAPI" qui prend en
charge le Hash MD5.

A+, Jean

"jean-marc" a écrit :

"jean saint jalmes" wrote in
message news:
> Bonjour,
>
> Je dois utiliser l'algorithme MD5 et l'encodage "base 64" dans un échange
> http avec un serveur distant sous VB6.0
>
> Connaissez-vous une API ou un contrôle qui peremette cela ?

Hello,

pour Base64, c'est facile. Voici 2 fonctions qui codent et décodent.
Ces fonctions ont été écrites par NG, qui les avait posté ici même,
dans le post:
http://groups.google.be/group/microsoft.public.fr.vb/browse_thread/thread/1c
20a2e2c9404101/5ee852a49d2c472b?qºse+64&rnum=4#5ee852a49d2c472b

je les reproduit ici in extenso:
Public Function Base64Encode$(S$)
Dim b() As Byte, Out() As Byte, i&, j&, L&, Enc() As Byte
If Len(S) = 0 Then Exit Function
Enc > StrConv("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
vbFromUnicode)
L = Len(S): b = StrConv(S, vbFromUnicode)
ReDim Preserve b(0 To (UBound(b) 3) * 3 + 2)
ReDim Preserve Out(0 To (UBound(b) 3) * 4 + 3)
For i = 0 To UBound(b) - 1 Step 3
Out(j) = Enc(b(i) 4): j = j + 1
Out(j) = Enc((b(i + 1) 16) Or (b(i) And 3) * 16): j = j + 1
Out(j) = Enc((b(i + 2) 64) Or (b(i + 1) And 15) * 4): j = j + 1
Out(j) = Enc(b(i + 2) And 63): j = j + 1
Next i
For i = 1 To i - L: Out(UBound(Out) - i + 1) = 61: Next i
Base64Encode = StrConv(Out, vbUnicode)
End Function


Public Function Base64Decode$(S$)
Dim b() As Byte, Out() As Byte, i&, j&, L&, Enc() As Byte, Dec(0 To 255)
As Byte
If Len(S) = 0 Then Exit Function
Enc > StrConv("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
vbFromUnicode)
For i = 0 To 255: Dec(i) = 64: Next
For i = 0 To 63: Dec(Enc(i)) = i: Next
L = Len(S): b = StrConv(S, vbFromUnicode)
ReDim Preserve Out(0 To (L 4) * 3 - 1)
For i = 0 To UBound(b) Step 4
Out(j) = (Dec(b(i)) * 4) Or (Dec(b(i + 1)) 16): j = j + 1
Out(j) = (Dec(b(i + 1)) And 15) * 16 Or (Dec(b(i + 2)) 4): j = j + 1
Out(j) = (Dec(b(i + 2)) And 3) * 64 Or Dec(b(i + 3)): j = j + 1
Next i
If b(L - 2) = 61 Then j = 2 Else If b(L - 1) = 61 Then j = 1 Else j = 0
ReDim Preserve Out(0 To UBound(Out) - j)
Base64Decode = StrConv(Out, vbUnicode)
End Function




Pour MD5, il doit suffire de 5 minutes de Googlage pour trouver

une implémentation correcte en VB.



--

Jean-marc