Ricerca…


introduzione

La codifica Base 64 rappresenta uno schema comune per la codifica binaria in formato di stringa ASCII usando radix 64. Il modulo base64 fa parte della libreria standard, il che significa che si installa insieme a Python. La comprensione di byte e stringhe è fondamentale per questo argomento e può essere esaminata qui . Questo argomento spiega come utilizzare le varie funzioni e basi numeriche del modulo base64.

Sintassi

  • base64.b64encode (s, altchars = Nessuno)
  • 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)

Parametri

Parametro Descrizione
base64.b64encode(s, altchars=None)
S Un oggetto simile a un byte
altchars Un oggetto simile a byte di lunghezza 2+ di caratteri per sostituire i caratteri '+' e '=' durante la creazione dell'alfabeto Base64. I personaggi extra vengono ignorati.
base64.b64decode(s, altchars=None, validate=False)
S Un oggetto simile a un byte
altchars Un oggetto simile a byte di lunghezza 2+ di caratteri per sostituire i caratteri '+' e '=' durante la creazione dell'alfabeto Base64. I personaggi extra vengono ignorati.
convalidare Se valida è True, i caratteri non nel normale alfabeto Base64 o nell'alfabeto alternativo non vengono scartati prima del controllo del riempimento
base64.standard_b64encode(s)
S Un oggetto simile a un byte
base64.standard_b64decode(s)
S Un oggetto simile a un byte
base64.urlsafe_b64encode(s)
S Un oggetto simile a un byte
base64.urlsafe_b64decode(s)
S Un oggetto simile a un byte
b32encode(s)
S Un oggetto simile a un byte
b32decode(s)
S Un oggetto simile a un byte
base64.b16encode(s)
S Un oggetto simile a un byte
base64.b16decode(s)
S Un oggetto simile a un byte
base64.a85encode(b, foldspaces=False, wrapcol=0, pad=False, adobe=False)
B Un oggetto simile a un byte
foldspaces Se i foldspaces sono True, verrà utilizzato il carattere 'y' invece di 4 spazi consecutivi.
wrapcol Il numero di caratteri prima di una nuova riga (0 non implica nessuna nuova riga)
tampone Se pad è True, i byte vengono riempiti su un multiplo di 4 prima della codifica
adobe Se Adobe è True, le sequenze codificate vengono incorniciate con '<~' e '' ~> 'come usate con i prodotti Adobe
base64.a85decode(b, foldspaces=False, adobe=False, ignorechars=b'\t\n\r\v')
B Un oggetto simile a un byte
foldspaces Se i foldspaces sono True, verrà utilizzato il carattere 'y' invece di 4 spazi consecutivi.
adobe Se Adobe è True, le sequenze codificate vengono incorniciate con '<~' e '' ~> 'come usate con i prodotti Adobe
ignorechars Un oggetto simile a un byte di caratteri da ignorare nel processo di codifica
base64.b85encode(b, pad=False)
B Un oggetto simile a un byte
tampone Se pad è True, i byte vengono riempiti su un multiplo di 4 prima della codifica
base64.b85decode(b)
B Un oggetto simile a un byte

Osservazioni

Fino a quando non uscì Python 3.4, le funzioni di codifica e decodifica base64 funzionavano solo con i tipi di bytes o di bytearray . Ora queste funzioni accettano qualsiasi oggetto simile a un byte .

Codifica e decodifica Base64

Per includere il modulo base64 nello script, devi prima importarlo:

import base64

Le funzioni di codifica e decodifica base64 richiedono entrambi un oggetto simile a un byte . Per ottenere la nostra stringa in byte, dobbiamo codificarla usando la funzione di codifica incorporata di Python. Più comunemente, viene utilizzata la codifica UTF-8 , tuttavia un elenco completo di queste codifiche standard (incluse le lingue con caratteri diversi) può essere trovato qui nella documentazione ufficiale di Python. Di seguito è riportato un esempio di codifica di una stringa in byte:

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

L'output dell'ultima riga sarà:

b'Hello World!'

Il prefisso b viene utilizzato per indicare che il valore è un oggetto byte.

Per Base64 codificare questi byte, usiamo la funzione base64.b64encode() :

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

Quel codice produrrebbe quanto segue:

b'SGVsbG8gV29ybGQh'

che è ancora nell'oggetto bytes. Per ottenere una stringa da questi byte, possiamo usare il metodo decode() di Python con la codifica UTF-8 :

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

L'output sarebbe quindi:

SGVsbG8gV29ybGQh

Se volessimo codificare la stringa e decodificare, potremmo usare il metodo 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)

Come ci si potrebbe aspettare, l'output sarebbe la stringa originale:

Base64 Encoded: SGVsbG8gV29ybGQh
Hello World!

Codifica e decodifica di Base32

Il modulo base64 include anche funzioni di codifica e decodifica per Base32. Queste funzioni sono molto simili alle funzioni 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)

Questo produrrebbe il seguente risultato:

Base32 Encoded: JBSWY3DPEBLW64TMMQQQ====
Hello World!

Codifica e decodifica Base16

Il modulo base64 include anche funzioni di codifica e decodifica per Base16. La base 16 viene comunemente indicata come esadecimale . Queste funzioni sono molto simili alle funzioni Base64 e 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)

Questo produrrebbe il seguente risultato:

Base16 Encoded: 48656C6C6F20576F726C6421
Hello World!

Codifica e decodifica ASCII85

Adobe ha creato la propria codifica ASCII85 che è simile a Base85, ma ha le sue differenze. Questa codifica viene utilizzata frequentemente nei file Adobe PDF. Queste funzioni sono state rilasciate in Python versione 3.4. Altrimenti, le funzioni base64.a85encode() e base64.a85encode() sono simili alle precedenti:

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)

Questo produce quanto segue:

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

Codifica e decodifica Base85

Proprio come le funzioni Base64, Base32 e Base16, le funzioni di codifica e decodifica base64.b85encode() sono base64.b85encode() e 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)

che emette quanto segue:

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow