Les Snippets

Connexion

Chaine vers Base 64 et vice versa

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 25/03/2006 23:41:19 et initié par EBArtSoft [Liste]
Date de mise à jour : 30/03/2006 12:55:00
Vue : 22332
Catégorie(s) : Cryptage, Fichier / Disque, Sécurité, Chaîne de caractères
Langages dispo pour ce code :
- VB6
- VB 2005, VB.NET 1.x
- PHP 3, PHP 4, PHP 5
- ColdFusion MX
- Python
- Windev
- VB6, VBA, VBScript



Langage : VB6
Date ajout : 25/03/2006
Posté par EBArtSoft [Liste]

Private Const EOL_SIZE      As Long = 2                ' Size of vbCrLf
Private Const LINE_SIZE     As Long = 40 + EOL_SIZE    ' Size of a line

Private Const Base64        As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Private Const Base64_EOF    As String = "="

Public Function Decode64(ByRef lpConvString As String) As String
    
    Dim pt          As Long
    Dim ptMax       As Long
    Dim dwBuffer    As Long
    Dim cbSize      As Long
    Dim cbBits      As Byte
    Dim aByte       As Byte
    
    
    dwBuffer = 0
    cbBits = 0
    cbSize = 0
    pt = 1
    ptMax = Len(lpConvString)
    
    Do While pt <= ptMax
        
        aByte = InStr(1, Base64, Mid$(lpConvString, pt, 1))
        If aByte Then
            
            ' Add 6 bits to the buffer
            dwBuffer = dwBuffer * 64 + aByte - 1
            cbBits = cbBits + 6
            If cbBits >= 8 Then
                Select Case cbBits
                    Case 12 ' 6 + 6
                        aByte = dwBuffer \ 16
                        dwBuffer = dwBuffer And 15
                        cbBits = 4
                    Case 10 ' 4 + 6
                        aByte = dwBuffer \ 4
                        dwBuffer = dwBuffer And 3
                        cbBits = 2
                    Case 8  ' 2 + 6
                        aByte = dwBuffer
                        dwBuffer = 0
                        cbBits = 0
                End Select
                cbSize = cbSize + 1
                Mid$(lpConvString, cbSize, 1) = Chr$(aByte)
            End If
        
        End If
        pt = pt + 1
    
    Loop
    
    Decode64 = Mid$(lpConvString, 1, cbSize)

End Function

Public Function Encode64(ByRef lpConvString As String) As String
    
    Dim pt          As Long
    Dim ptMax       As Long
    Dim dwBuffer    As Long
    Dim cbSize      As Long
    Dim cbBits      As Byte
    Dim cbLines     As Long
    Dim aByte       As Byte
    Dim lpBuffer    As String
    
    dwBuffer = 0
    cbBits = 0
    cbSize = EOL_SIZE                       ' Tips for the NewLine
    cbLines = 1
    pt = 1
    ptMax = Len(lpConvString)
    lpBuffer = String$(LINE_SIZE + ptMax * 2, 0)
    
    Do Until pt > ptMax
        
        ' Add 8 bits to the buffer
        dwBuffer = dwBuffer * 256 + Asc(Mid$(lpConvString, pt, 1))
        cbBits = cbBits + 8
        
        Do
            
            Select Case cbBits
            Case 6
                aByte = dwBuffer
                dwBuffer = 0
                cbBits = 0
            Case 8
                aByte = dwBuffer \ 4
                dwBuffer = dwBuffer And 3
                cbBits = 2
            Case 10
                aByte = dwBuffer \ 16
                dwBuffer = dwBuffer And 15
                cbBits = 4
            Case 12
                aByte = dwBuffer \ 64
                dwBuffer = dwBuffer And &H3F
                cbBits = 6
                
            Case 2 ' Only when pt = ptmax
                aByte = dwBuffer * 16
                dwBuffer = 0
                cbBits = 0
            Case 4 ' Only when pt = ptmax
                aByte = dwBuffer * 4
                dwBuffer = 0
                cbBits = 0
            
            End Select
        
            ' Add a character to the buffer
            cbSize = cbSize + 1
            Mid$(lpBuffer, cbSize, 1) = Mid$(Base64, 1 + aByte, 1)
            
            ' Add the NewLine to the buffer
            If (cbSize Mod LINE_SIZE) = 0 Then
                Mid$(lpBuffer, cbSize + 1, EOL_SIZE) = vbCrLf
                cbSize = cbSize + EOL_SIZE
                cbLines = cbLines + 1
            End If
        
        ' Loop while not done with this byte
        Loop While (cbBits = 6) Or ((pt = ptMax) And (cbBits > 0))
        
        pt = pt + 1
    
    Loop
    
    ' Add one or two bytes Base64_EOF
    Select Case (cbSize - EOL_SIZE * cbLines) Mod 3
      Case 1: '8 bit final
        Mid$(lpBuffer, cbSize + 1, 2) = Base64_EOF & Base64_EOF
        cbSize = cbSize + 2
      Case 2: '16 bit final
        Mid$(lpBuffer, cbSize + 1, 1) = Base64_EOF
        cbSize = cbSize + 1
    End Select
    
    ' Return the string and ignore the two first bytes
    Encode64 = Mid$(lpBuffer, 1 + EOL_SIZE, cbSize - EOL_SIZE)

End Function

Public Function hash_string(ByRef s As String) As String
    Dim h As Long
    Dim i As Long
    h = 0
    For i = 1 To Len(s)
        h = ((h And &HFF000000) \ &H1000000) + _
            (((h And &HFFFFFF) * 8) + Asc(Mid$(s, i, 1)))
    Next
    hash_string = Right$("00000000" & Hex$(h), 8)
End Function


Remarque :
'J'ai encore perdu le nom de l'auteur
Langage : VB.NET 1.x , VB 2005
Date ajout : 26/03/2006
Posté par Nix [Liste]
DateMAJ : 27/03/2006

#Region " Base64 "

    Public Shared Function DecodeBase64(ByVal txt As String) As String
        Dim strBytes() As Byte = System.Convert.FromBase64String(txt) 
        Return System.Text.Encoding.GetEncoding("iso-8859-1").GetString(strBytes) 
    End Function

    Public Shared Function EncodeBase64(ByVal txt As String) As String
        Dim strBytes() As Byte = System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(txt) 
        Return System.Convert.ToBase64String(strBytes) 
    End Function



#End Region



Remarque :
Vous pouvez choisir un autre type d'encodage que ISO-8859-1 (c'est celui que j'utilise le plus)
Langage : PHP 3 , PHP 4 , PHP 5
Date ajout : 27/03/2006
Posté par malalam [Liste]
$sString64 = base64_encode ($sString); // encode la chaîne en base 64
$sString = base64_decode ($sString64); // decode une chaîne base 64
Langage : ColdFusion MX
Date ajout : 30/03/2006
Posté par nickadele [Liste]
DateMAJ : 30/03/2006
<cfset data64 = toBase64(stringData)> <---! Encode une chaine en base 64--->
 
 <!---Pour l'inverse on passe d'abord par une valeur binaire--->
 <cfset binaryData = toBinary(data64)>
 <cfset stringData = toString(binaryData)>

Langage : Python
Date ajout : 09/05/2006
Posté par Arglanir [Liste]
# l'import qui va bien
import base64
#les deux fonctions
encode = base64.encodestring
decode = base64.decodestring
#on peut tester
chaine = "Alea jacta est."
test = encode(chaine)
chaine == decode(test)

Langage : Windev
Date ajout : 12/09/2006
Posté par Elian Lacroix [Liste]
Encodage de sChaine en base 64 :
sChaine64 = Crypte(sChaine, "", crypteAucun, Vrai)
// Décodage inverse :
sChaine = Décrypte(sChaine64, "", crypteAucun, Vrai)
Langage : VB6 , VBA , VBScript
Date ajout : 20/12/2007
Posté par Renfield [Liste]

Public Function Base64Enc(ByRef vxbData() As Byte) As String
    With CreateObject("MSXML.DOMDocument").createElement("Base64")
        .dataType = "bin.base64"
        .nodeTypedValue = vxbData
        Base64Enc = .Text
    End With
End Function

Public Function Base64Dec(ByRef vsData As String) As Byte()
    With CreateObject("MSXML.DOMDocument").createElement("Base64")
        .dataType = "bin.base64"
        .Text = vsData
        Base64Dec = .nodeTypedValue
    End With
End Function



Snippets en rapport avec : String, Base64



Codes sources en rapport avec : String, Base64

{C# / C#.NET} CONVERSION D'UNE IMAGE EN BASE64STRING ET INVERSEMENT
A la suite d'une question sur le forum (http://www.csharpfr.com/forum.v2.aspx?ID=541969), voici une ...

{Delphi} COMBINAISONS DE STRINGS
Bonjour ! Ce code permet à partir d'une base, de faire des combinaisons de strings. Je cherche à...

{Delphi} BASE64/BASE64URL ENCODE/DECODE
EDBase64 est une adaptation Delphi du code C/CPP de Turnerom lien de la source : http://www.cpp...

{C / C++ / C++.NET} GESTION DE CHAINE DE CARACTÉRE EN C++ AVEC NSTRING
voila une Classe qui gère les Chaine de caractère. cette version est vraiment pauvre mais toute aide...

{Visual Basic, VB6, VB.NET, VB 2005} TOBASE64 IMAGE ET TEXTE
Application permettant d'encoder et de décoder une image ou un texte en base 64. En outre elle per...

{C / C++ / C++.NET} GSTRING - GESTION DES CHAINES DE CARACTÈRES
Voici une petite classe permettant de gérer les chaines de caractères tout comme les std::string, av...

{JAVA / J2EE} GENERATEUR DE MOT PAR INCREMENTATION
Cette class permet de renvoyer un mot à partir d'un autre avec une permutation du dernier caractère ...

{Delphi} LIBRAIRIE DE FONCTIONS DE GESTION DE SOUS-CHAINES.
Quelques fois, on aimerai avoir une sorte de "structure" de plusieurs éléments variable en taille et...

{Visual Basic, VB6, VB.NET, VB 2005} OPÉRATIONS SUR LES CHAINES DE CARACTÈRE OPTIMISÉES ET ÉTENDUES
Bonjour à tous, Voici un module regroupant un paquet de fonctions permettant des opérations sur l...

{C / C++ / C++.NET} VOTRE AVIS, CALCUL DE TFIDF C++
Je voudrais votre avis sur le petit code suivant. Voici un tout petit code pour le calcul de tfid...