Sujet : [VB.Net]Comment décoder une chaine encodée en base64 ?
Salut,
Tout est dans la question : je cherche le moyen de décoder une chaine qui est en base 64.
J'avais trouvé une fonction qui fait ça mais elle est écrite en VB or il me faut ça en VB.Net et je n'ai pas su l'adapter.
---
J'ai donc poursuivi mes recherches jusqu'à trouver le namespace pour Vb.Net qui permet de gérer le format base 64 :
Les classes qui permettent l'encodage et le décodage sont les suivantes :
FromBase64Transform
ToBase64Transform
J'ai trouvé dans ces pages un exemple qui permet de décoder un fichier en base64 et de mettre de résultat dans un nouveau fichier. J'ai donc essayé d'adapter cet exemple avec le peu de connaissances que j'ai en Vb.Net pour convertir une chaine en base64 vers une chaine décodée et voici ce que j'ai obtenu :
'
' Fonction de décodage de chaine encodée au format base64
'
' @param [String] base64String La chaine à décoder.
' @return [String] La chaine décodée.
'
Public Function Base64Decode(ByVal base64String As String) As String
Dim myTransform As New FromBase64Transform(FromBase64TransformMode.IgnoreWhiteSpaces)
Dim myOutputBytes(myTransform.OutputBlockSize - 1) As Byte
Dim sChaineDecodee As String = ""
Dim myInputBytes(base64String.Length - 1) As Byte
myInputBytes = System.Text.Encoding.ASCII.GetBytes(base64String)
'Transform the data in chunks the size of InputBlockSize.
Dim i As Integer = 0
While myInputBytes.Length - i > 4 'myTransform.InputBlockSize
myTransform.TransformBlock(myInputBytes, i, 4, myOutputBytes, 0) 'myTransform.InputBlockSize
i += 4 'myTransform.InputBlockSize
sChaineDecodee &= System.Text.Encoding.Default.GetString(myOutputBytes)
End While
'Transform the final block of data.
myOutputBytes = myTransform.TransformFinalBlock(myInputBytes, i, myInputBytes.Length - i)
sChaineDecodee &= System.Text.Encoding.Default.GetString(myOutputBytes)
'Free up any used resources.
myTransform.Clear()
Return sChaineDecodee
End Function
L'ennui c'est que la chaine retournée est vide et que je ne sais pas comment résoudre ce problème.
sChaineDecodee &= System.Text.Encoding.Default.GetString(myOutputBytes)
C'est ici le coeur du problème : sChaineDecodee vaut toujours vide. Quelle solution dois-je utiliser pour passer du tableau d'octets à la chaine ?
"Keyboard not detected, press a key to continue..."