Recherche…


Introduction

L'encodage Base 64 représente un schéma courant pour coder le format binaire en chaîne ASCII à l'aide de radix 64. Le module base64 fait partie de la bibliothèque standard, ce qui signifie qu'il s'installe avec Python. La compréhension des octets et des chaînes est essentielle à ce sujet et peut être consultée ici . Cette rubrique explique comment utiliser les différentes fonctionnalités et bases numériques du module base64.

Syntaxe

  • base64.b64encode (s, altchars = Aucun)
  • base64.b64decode (s, altchars = Aucun, validez = False)
  • base64.standard_b64encode (s)
  • base64.standard_b64decode (s)
  • base64.urlsafe_b64encode (s)
  • base64.urlsafe_b64decode (s)
  • base64.b32encode (s)
  • base64.b32decode (s)
  • base64.b16encode (s)
  • base64.b16decode (s)
  • base64.a85encode (b, foldspaces = false, wrapcol = 0, pad = false, adobe = false)
  • base64.a85decode (b, foldpaces = False, adobe = False, ignorechars = b '\ t \ n \ r \ v')
  • base64.b85encode (b, pad = false)
  • base64.b85decode (b)

Paramètres

Paramètre La description
base64.b64encode(s, altchars=None)
s Un objet de type octets
altchars Un objet de type 2 octets, d'une longueur de 2+ caractères, pour remplacer les caractères «+» et «=» lors de la création de l'alphabet Base64. Les caractères supplémentaires sont ignorés.
base64.b64decode(s, altchars=None, validate=False)
s Un objet de type octets
altchars Un objet de type 2 octets, d'une longueur de 2+ caractères, pour remplacer les caractères «+» et «=» lors de la création de l'alphabet Base64. Les caractères supplémentaires sont ignorés.
valider Si valide est True, les caractères qui ne figurent pas dans l'alphabet Base64 normal ou l'alphabet alternatif ne sont pas supprimés avant le contrôle de remplissage.
base64.standard_b64encode(s)
s Un objet de type octets
base64.standard_b64decode(s)
s Un objet de type octets
base64.urlsafe_b64encode(s)
s Un objet de type octets
base64.urlsafe_b64decode(s)
s Un objet de type octets
b32encode(s)
s Un objet de type octets
b32decode(s)
s Un objet de type octets
base64.b16encode(s)
s Un objet de type octets
base64.b16decode(s)
s Un objet de type octets
base64.a85encode(b, foldspaces=False, wrapcol=0, pad=False, adobe=False)
b Un objet de type octets
espaces de pliage Si foldspaces a la valeur True, le caractère 'y' sera utilisé au lieu de 4 espaces consécutifs.
wrapcol Le nombre de caractères avant une nouvelle ligne (0 n'implique aucune nouvelle ligne)
tampon Si pad est True, les octets sont remplis à un multiple de 4 avant l'encodage
adobe Si adobe a la valeur True, l'enchaînement encodé avec est encadré avec '<~' et '' ~> 'comme utilisé avec les produits Adobe.
base64.a85decode(b, foldspaces=False, adobe=False, ignorechars=b'\t\n\r\v')
b Un objet de type octets
espaces de pliage Si foldspaces a la valeur True, le caractère 'y' sera utilisé au lieu de 4 espaces consécutifs.
adobe Si adobe a la valeur True, l'enchaînement encodé avec est encadré avec '<~' et '' ~> 'comme utilisé avec les produits Adobe.
ignorechars Un objet de type octet à ignorer dans le processus de codage
base64.b85encode(b, pad=False)
b Un objet de type octets
tampon Si pad est True, les octets sont remplis à un multiple de 4 avant l'encodage
base64.b85decode(b)
b Un objet de type octets

Remarques

Jusqu'à la sortie de Python 3.4, les fonctions d'encodage et de décodage en base64 fonctionnaient uniquement avec les types bytes ou bytearray . Maintenant, ces fonctions acceptent tout objet de type octet .

Base64 de codage et de décodage

Pour inclure le module base64 dans votre script, vous devez d'abord l'importer:

import base64

Les fonctions d'encodage et de décodage base64 requièrent toutes deux un objet de type octet . Pour obtenir notre chaîne en octets, nous devons l'encoder en utilisant la fonction de codage intégrée de Python. Le plus souvent, le UTF-8 est utilisé, mais une liste complète de ces encodages standard (y compris les langages avec des caractères différents) peut être trouvée ici dans la documentation officielle de Python. Voici un exemple d'encodage d'une chaîne en octets:

s = "Hello World!"
b = s.encode("UTF-8")

La sortie de la dernière ligne serait:

b'Hello World!'

Le préfixe b est utilisé pour indiquer que la valeur est un objet octets.

Pour encoder ces octets en Base64, nous utilisons la fonction base64.b64encode() :

import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
print(e)

Ce code produirait les informations suivantes:

b'SGVsbG8gV29ybGQh'

qui est toujours dans l'objet octets. Pour obtenir une chaîne de ces octets, nous pouvons utiliser la méthode decode() de Python avec le UTF-8 :

import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
s1 = e.decode("UTF-8")
print(s1)

La sortie serait alors:

SGVsbG8gV29ybGQh

Si nous voulions encoder la chaîne puis décoder, nous pourrions utiliser la méthode base64.b64decode() :

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base64 Encode the bytes
e = base64.b64encode(b)
# Decoding the Base64 bytes to string
s1 = e.decode("UTF-8")
# Printing Base64 encoded string
print("Base64 Encoded:", s1)
# Encoding the Base64 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base64 bytes
d = base64.b64decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

Comme vous vous en doutez, la sortie serait la chaîne d'origine:

Base64 Encoded: SGVsbG8gV29ybGQh
Hello World!

Base32 de codage et de décodage

Le module base64 inclut également des fonctions de codage et de décodage pour Base32. Ces fonctions sont très similaires aux fonctions Base64:

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base32 Encode the bytes
e = base64.b32encode(b)
# Decoding the Base32 bytes to string
s1 = e.decode("UTF-8")
# Printing Base32 encoded string
print("Base32 Encoded:", s1)
# Encoding the Base32 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base32 bytes
d = base64.b32decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

Cela produirait la sortie suivante:

Base32 Encoded: JBSWY3DPEBLW64TMMQQQ====
Hello World!

Base de codage et de décodage16

Le module base64 inclut également des fonctions de codage et de décodage pour Base16. La base 16 est généralement appelée hexadécimale . Ces fonctions sont très similaires aux fonctions Base64 et Base32:

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base16 Encode the bytes
e = base64.b16encode(b)
# Decoding the Base16 bytes to string
s1 = e.decode("UTF-8")
# Printing Base16 encoded string
print("Base16 Encoded:", s1)
# Encoding the Base16 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base16 bytes
d = base64.b16decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

Cela produirait la sortie suivante:

Base16 Encoded: 48656C6C6F20576F726C6421
Hello World!

Codage et décodage ASCII85

Adobe a créé son propre encodage appelé ASCII85, similaire à Base85, mais qui a ses différences. Cet encodage est fréquemment utilisé dans les fichiers Adobe PDF. Ces fonctions ont été publiées en version Python 3.4. Sinon, les fonctions base64.a85encode() et base64.a85encode() sont similaires aux précédentes:

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# ASCII85 Encode the bytes
e = base64.a85encode(b)
# Decoding the ASCII85 bytes to string
s1 = e.decode("UTF-8")
# Printing ASCII85 encoded string
print("ASCII85 Encoded:", s1)
# Encoding the ASCII85 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the ASCII85 bytes
d = base64.a85decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

Cela génère les éléments suivants:

ASCII85 Encoded: 87cURD]i,"Ebo80
Hello World!

Base de codage et de décodage85

Tout comme les fonctions Base64, Base32 et Base16, les fonctions d'encodage et de décodage base64.b85encode() sont base64.b85encode() et base64.b85decode() :

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base85 Encode the bytes
e = base64.b85encode(b)
# Decoding the Base85 bytes to string
s1 = e.decode("UTF-8")
# Printing Base85 encoded string
print("Base85 Encoded:", s1)
# Encoding the Base85 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base85 bytes
d = base64.b85decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

qui produit ce qui suit:

Base85 Encoded: NM&qnZy;B1a%^NF
Hello World!


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow