Buscar..


Introducción

La codificación de Base 64 representa un esquema común para la codificación de binarios en formato de cadena ASCII utilizando radix 64. El módulo base64 es parte de la biblioteca estándar, lo que significa que se instala junto con Python. La comprensión de los bytes y las cadenas es fundamental para este tema y se puede revisar aquí . Este tema explica cómo usar las distintas funciones y bases numéricas del módulo base64.

Sintaxis

  • base64.b64encode (s, altchars = Ninguno)
  • base64.b64decode (s, altchars = None, validate = 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)

Parámetros

Parámetro Descripción
base64.b64encode(s, altchars=None)
s Un objeto parecido a bytes
altares Un objeto similar a bytes de longitud 2+ de caracteres para reemplazar los caracteres '+' y '=' al crear el alfabeto Base64. Los caracteres adicionales son ignorados.
base64.b64decode(s, altchars=None, validate=False)
s Un objeto parecido a bytes
altares Un objeto similar a bytes de longitud 2+ de caracteres para reemplazar los caracteres '+' y '=' al crear el alfabeto Base64. Los caracteres adicionales son ignorados.
validar Si valide es True, los caracteres que no están en el alfabeto Base64 normal o en el alfabeto alternativo no se descartan antes de la verificación de relleno
base64.standard_b64encode(s)
s Un objeto parecido a bytes
base64.standard_b64decode(s)
s Un objeto parecido a bytes
base64.urlsafe_b64encode(s)
s Un objeto parecido a bytes
base64.urlsafe_b64decode(s)
s Un objeto parecido a bytes
b32encode(s)
s Un objeto parecido a bytes
b32decode(s)
s Un objeto parecido a bytes
base64.b16encode(s)
s Un objeto parecido a bytes
base64.b16decode(s)
s Un objeto parecido a bytes
base64.a85encode(b, foldspaces=False, wrapcol=0, pad=False, adobe=False)
segundo Un objeto parecido a bytes
espacios de plegado Si foldspaces es True, se utilizará el carácter 'y' en lugar de 4 espacios consecutivos.
envoltura Los caracteres numéricos antes de una nueva línea (0 implica que no hay nuevas líneas)
almohadilla Si el pad es True, los bytes se rellenan a un múltiplo de 4 antes de codificar
adobe Si Adobe es verdadero, la secuencia codificada se debe enmarcar con '<~' y '' ~> 'como se usa con los productos de Adobe.
base64.a85decode(b, foldspaces=False, adobe=False, ignorechars=b'\t\n\r\v')
segundo Un objeto parecido a bytes
espacios de plegado Si foldspaces es True, se utilizará el carácter 'y' en lugar de 4 espacios consecutivos.
adobe Si Adobe es verdadero, la secuencia codificada se debe enmarcar con '<~' y '' ~> 'como se usa con los productos de Adobe.
ignorantes Un objeto de caracteres similar a bytes que se ignorará en el proceso de codificación.
base64.b85encode(b, pad=False)
segundo Un objeto parecido a bytes
almohadilla Si el pad es True, los bytes se rellenan a un múltiplo de 4 antes de codificar
base64.b85decode(b)
segundo Un objeto parecido a bytes

Observaciones

Hasta que salió Python 3.4, las funciones de codificación y decodificación de base64 solo funcionaban con bytes o tipos de bytearray . Ahora estas funciones aceptan cualquier objeto similar a bytes .

Codificación y decodificación Base64

Para incluir el módulo base64 en su script, primero debe importarlo:

import base64

Las funciones de codificación y decodificación de base64 requieren un objeto similar a bytes . Para convertir nuestra cadena en bytes, debemos codificarla utilizando la función de codificación incorporada de Python. Más comúnmente, se usa la codificación UTF-8 , sin embargo, se puede encontrar una lista completa de estas codificaciones estándar (incluidos los idiomas con diferentes caracteres) aquí en la Documentación oficial de Python. A continuación se muestra un ejemplo de codificación de una cadena en bytes:

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

La salida de la última línea sería:

b'Hello World!'

El prefijo b se utiliza para indicar que el valor es un objeto de bytes.

Para codificar en Base64 estos bytes, usamos la función base64.b64encode() :

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

Ese código daría como resultado lo siguiente:

b'SGVsbG8gV29ybGQh'

que todavía está en el objeto bytes. Para obtener una cadena de estos bytes, podemos usar el método decode() Python con la UTF-8 :

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

La salida sería entonces:

SGVsbG8gV29ybGQh

Si quisiéramos codificar la cadena y luego decodificar, podríamos usar el método 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)

Como es de esperar, la salida sería la cadena original:

Base64 Encoded: SGVsbG8gV29ybGQh
Hello World!

Codificación y decodificación Base32

El módulo base64 también incluye funciones de codificación y decodificación para Base32. Estas funciones son muy similares a las funciones de 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)

Esto produciría el siguiente resultado:

Base32 Encoded: JBSWY3DPEBLW64TMMQQQ====
Hello World!

Codificación y decodificación Base16

El módulo base64 también incluye funciones de codificación y decodificación para Base16. La base 16 es comúnmente conocida como hexadecimal . Estas funciones son muy similares a las funciones Base64 y 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)

Esto produciría el siguiente resultado:

Base16 Encoded: 48656C6C6F20576F726C6421
Hello World!

Codificación y decodificación ASCII85

Adobe creó su propia codificación llamada ASCII85 que es similar a Base85, pero tiene sus diferencias. Esta codificación se utiliza con frecuencia en los archivos PDF de Adobe. Estas funciones fueron lanzadas en la versión 3.4 de Python. De lo contrario, las funciones base64.a85encode() y base64.a85encode() son similares a las anteriores:

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)

Esto da como resultado lo siguiente:

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

Codificación y decodificación Base85

Al igual que las funciones Base64, Base32 y Base16, las funciones de codificación y decodificación base64.b85encode() son base64.b85encode() y 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)

que produce lo siguiente:

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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow