IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[VB.Net]Comment décoder une chaine encodée en base64 ?


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 63
    Points : 33
    Points
    33
    Par défaut [VB.Net]Comment décoder une chaine encodée en base64 ?
    Bonsoir,

    Tout est dans la question : je cherche le moyen de décoder une chaine qui est en base 64.

    J'ai bien trouvé une fonction dans la faq VB, mais c'est en Vb.Net qu'il me faut ça...Et la fonction VB ne fonctionne pas en .Net.

    Si quelqu'un peut me dépanner, cela me ferait grandement avancer !

    Le lien vers la fonction de la FAQ VB

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    J'ai reussi à trouver le namespace qui met à disposition les outils pour travailler avec le format base64 :

    System.Security.Cryptography

    Les classes qui permettent l'encodage et le décodage sont les suivantes :

    FromBase64Transform
    ToBase64Transform

    Il y a un exemple donné pour le décodage, qui permet de décoder un fichier en base64 et de mettre de résultat dans un nouveau fichier. Je suis en train d'adapter cet exemple pour faire la même chose mais de chaîne source à chaîne destination...et c'est pas simple...D'autant que comme je ne connais pas bien le .Net, j'y vais à tatons !

    Bref, si j'y arrive, je poste ma fonction...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Bon je sèche...Voici ce que j'ai obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
        '
        ' 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. J'en appel à vos connaissances et compétences !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par SamRay1024
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?
    J'ai déjà corrigé une erreur : l'opérateur de concaténation n'est pas le & mais le +. A force de passer d'un langage à l'autre, je mélange tout ! La ligne devient donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sChaineDecodee += System.Text.Encoding.Default.GetString(myOutputBytes)
    Cela ne résoud cependant pas mon problème. Ma chaîne reste vide...Personne n'a d'idée ??

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Voici deux méthodes que l'on vient de me communiquer qui fonctionnent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    imports System
    imports System.Text
     
    Public Function Base64Decode(ByVal Texte As String) As String
    	Try
    		If Texte.Length = 0 Then
    			Return ""
    		Else
    			Return Encoding.ASCII.GetString(Convert.FromBase64String(Texte))
    		End If
    	Catch ex As Exception
    		Return ""
    	End Try
    End Function
     
    Public Function Base64Encode(ByVal Texte As String) As String
    	Try
    		Dim texteBytes As Byte() = Encoding.ASCII.GetBytes(Texte)
    		If texteBytes.Length = 0 Then
    			Return ""
    		Else
    			Return Convert.ToBase64String(texteBytes)
    		End If
    	Catch ex As Exception
    		Return ""
    	End Try
    End Function
    Merci à tous...

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Suggestion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Imports System
    Imports System.Text
     
    Public Function Base64Decode(ByVal text As String) As String
     Dim sb As New StringBuilder("")
     Try
      If Not(Texte="") Then
       sb.Append(Encoding.ASCII.GetString(Convert.FromBase64String(text)))
      End If
     Catch
     Finally
      Return sb.ToString()
     End Try
    End Function

  7. #7
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Puisqu'il n'y avait pas merci pour cette solution...je corrige cette erreur :

    MERCI NEGUIB !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment chercher une chaine dans une autre VB.NET?
    Par tssi555 dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/09/2008, 15h20
  2. Réponses: 1
    Dernier message: 21/07/2006, 12h36
  3. [VB.Net 2.0/xsd] Comment passer une chaine de connexion dynamiquement ?
    Par graphicsxp dans le forum Accès aux données
    Réponses: 4
    Dernier message: 21/07/2006, 11h20
  4. Réponses: 3
    Dernier message: 12/05/2006, 10h53
  5. Comment diffuser une chaine de télé/radio sur le net ?
    Par nemesix dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 24/02/2006, 08h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo