Rechercher : dans
Par :

BASE64 Decode GIF VB

sebcbien81, le 5 mai 2009 à 18:10:40 
 Signaler ce message aux modérateurs

Bonjour,

Je récupère d'un fichier XML 2 champs encryptés en Base64, l'un en HTML l'autre en GIF.

J'utilise le code ci dessous pour décoder. Cela marche pour le HTML mais pas pour le GIF. Le champ pour le GIF n'affiche qu'un bout de code débutant par "GIF87a"

Quelqun peut il me dire pourquoi, et surtout comment faire pour le GIF.

NB : je débute en VB, une explication claire serait appréciée...

Function Base64Decode(ByVal base64String As String) As String

Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim dataLength, sout, groupBegin
Dim numDataBytes, CharCounter, thischar, thisData, nGroup, pOut

'Suppression des espaces/entrées/tab, s'il y en a
base64String = Replace(base64String, vbCrLf, "")
base64String = Replace(base64String, vbTab, "")
base64String = Replace(base64String, " ", "")

'la longueur de la chaîne passée doit être un multiple de 4
dataLength = Len(base64String)
If dataLength Mod 4 <> 0 Then
Err.Raise 1, "Base64Decode", "Bad Base64 string."
Exit Function
End If

' Decodage de chaque groupe:
For groupBegin = 1 To dataLength Step 4

' Chaque groupe se transforme en 3 octets.
numDataBytes = 3
nGroup = 0

For CharCounter = 0 To 3
' On convertit chaque caractère en 6 bits de données, et l'ajouter à un
'entier pour assurer le stockage temporaire. Si le caractère est
'un '=', il y a un byte de données de moins (il ne peut avoir que 2 '=' au
'maximum dans toute la chaine).

thischar = Mid(base64String, groupBegin + CharCounter, 1)

If thischar = "=" Then
numDataBytes = numDataBytes - 1
thisData = 0
Else
thisData = InStr(1, Base64, thischar, vbBinaryCompare) - 1
End If
If thisData = -1 Then
Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
Exit Function
End If
nGroup = 64 * nGroup + thisData
Next

'Hex divise l'entier long en 6 groupes de 4 bits
nGroup = Hex(nGroup)

'Ajout des zéros de tête
nGroup = String(6 - Len(nGroup), "0") & nGroup

'Conversion de l'entier en héxa en 3 caractères
pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _
Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
Chr(CByte("&H" & Mid(nGroup, 5, 2)))

'concatenation avec la chaîne de sortie
sout = sout & Left(pOut, numDataBytes)
Next

Base64Decode = sout

End Function

Merci

Meilleures réponses pour « BASE64 Decode GIF VB » dans :
Codage Base64 Voir Le codage Base64 Le principe du codage Base 64 consiste à utiliser des caractères US-ASCII (caractères non accentués) pour coder tout type de données codé sur 8 bits. Les protocoles de courrier électronique ont en effet été prévus à...
[VBA]Connecter une base de donnée (MDB) à excel VoirConnecter une base de donnée access (MDB) dans une application excel. Ajouter la référence Microsoft DAO object librairy X.X Dans un module général (Module1 par exemple) coller le code ci-dessous Sub CopieDBaccess() Dim BDexp As...
Microsoft Windows - La base de registre VoirQu'est-ce que la base de registres Dans la version 3.1 de Microsoft Windows, les applications installées étaient configurées vis-à-vis de Windows grâce à des fichiers de configuration (dont l'extension était .ini). D'autre part, deux fichiers de...
Connexion à la base de données avec JDBC VoirConnexion à la base de données L'API (Application Programming Interface) JDBC, c'est-à-dire la bibliothèque de classes JDBC, se charge de trois étapes indispensables à la connexion à une base de données : la création d'une connexion à la...
Oracle - Les fichiers d'une base Oracle VoirLes fichiers physiques d'une base Oracle Les fichiers physiques d'une base Oracle permettent de stocker de manière persistante les données manipulées par Oracle, tandis que la mémoire sert à optimiser la vitesse de fonctionnement de la base de...