Python Language
Bas64-modulen
Sök…
Introduktion
Bas 64-kodning representerar ett vanligt schema för kodning av binärt i ASCII-strängformat med radix 64. Bas64-modulen är en del av standardbiblioteket, vilket innebär att den installeras tillsammans med Python. Förståelse för byte och strängar är avgörande för detta ämne och kan granskas här . Detta ämne förklarar hur man använder de olika funktionerna och nummerbaserna i bas64-modulen.
Syntax
- base64.b64encode (s, altchars = None)
- base64.b64decode (s, altchars = None, valid = = 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, vikytor = Falsk, 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)
parametrar
Parameter | Beskrivning |
---|---|
base64.b64encode(s, altchars=None) | |
s | Ett bytesliknande objekt |
altchars | Ett bytesliknande objekt med längd 2+ på tecken för att ersätta tecknen '+' och '=' när du skapar Base64-alfabetet. Extra tecken ignoreras. |
base64.b64decode(s, altchars=None, validate=False) | |
s | Ett bytesliknande objekt |
altchars | Ett bytesliknande objekt med längd 2+ på tecken för att ersätta tecknen '+' och '=' när du skapar Base64-alfabetet. Extra tecken ignoreras. |
bekräfta | Om Valide är sant, är tecken som inte i normala Base64 alfabetet eller alternativa alfabetet inte kasseras innan stoppningen kontrollen |
base64.standard_b64encode(s) | |
s | Ett bytesliknande objekt |
base64.standard_b64decode(s) | |
s | Ett bytesliknande objekt |
base64.urlsafe_b64encode(s) | |
s | Ett bytesliknande objekt |
base64.urlsafe_b64decode(s) | |
s | Ett bytesliknande objekt |
b32encode(s) | |
s | Ett bytesliknande objekt |
b32decode(s) | |
s | Ett bytesliknande objekt |
base64.b16encode(s) | |
s | Ett bytesliknande objekt |
base64.b16decode(s) | |
s | Ett bytesliknande objekt |
base64.a85encode(b, foldspaces=False, wrapcol=0, pad=False, adobe=False) | |
b | Ett bytesliknande objekt |
foldspaces | Om vikutrymmen är sant, kommer tecknet "y" att användas i stället för fyra rader i följd. |
wrapcol | Antalet tecken före en ny linje (0 innebär inga nya rader) |
vaddera | Om pad är sant, vadderas byte till en multipel av 4 innan kodningen |
adobe | Om adobe är sant, kommer den kodade sekvenserade med inramas med '<~' och '' ~> 'som används med Adobe-produkter |
base64.a85decode(b, foldspaces=False, adobe=False, ignorechars=b'\t\n\r\v') | |
b | Ett bytesliknande objekt |
foldspaces | Om vikutrymmen är sant, kommer tecknet "y" att användas i stället för fyra rader i följd. |
adobe | Om adobe är sant, kommer den kodade sekvenserade med inramas med '<~' och '' ~> 'som används med Adobe-produkter |
ignorechars | Ett bytesliknande objekt för tecken att ignorera i kodningsprocessen |
base64.b85encode(b, pad=False) | |
b | Ett bytesliknande objekt |
vaddera | Om pad är sant, vadderas byte till en multipel av 4 innan kodningen |
base64.b85decode(b) | |
b | Ett bytesliknande objekt |
Anmärkningar
Fram till Python 3.4 kom ut, Base64-kodning och avkodning fungerar endast arbetat med bytes
eller bytearray
typer. Nu accepterar dessa funktioner alla byte-liknande objekt .
Kodning och avkodning Base64
För att inkludera bas64-modulen i ditt skript måste du importera den först:
import base64
Bas64-kodnings- och avkodningsfunktionerna kräver båda ett bytesliknande objekt . För att få strängen till byte måste vi koda den med Pythons inbyggda kodningsfunktion. Vanligtvis används UTF-8
kodningen, men en fullständig lista över dessa standardkodningar (inklusive språk med olika tecken) kan hittas här i den officiella Python-dokumentationen. Nedan är ett exempel på kodning av en sträng till byte:
s = "Hello World!"
b = s.encode("UTF-8")
Utgången från den sista raden skulle vara:
b'Hello World!'
Prefixet b
används för att beteckna värdet är ett byteobjekt.
För Base64-kodning av dessa byte använder base64.b64encode()
funktionen base64.b64encode()
:
import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
print(e)
Den koden skulle skicka ut följande:
b'SGVsbG8gV29ybGQh'
vilket fortfarande finns i byteobjektet. För att få en sträng ur dessa byte kan vi använda Pythons decode()
UTF-8
:
import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
s1 = e.decode("UTF-8")
print(s1)
Utgången skulle då vara:
SGVsbG8gV29ybGQh
Om vi ville koda strängen och sedan avkoda kan vi använda 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)
Som du kanske har förväntat oss skulle utgången vara den ursprungliga strängen:
Base64 Encoded: SGVsbG8gV29ybGQh
Hello World!
Kodning och avkodning Base32
Bas64-modulen innehåller också kodnings- och avkodningsfunktioner för Base32. Dessa funktioner liknar bas64-funktionerna:
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)
Detta skulle producera följande utgång:
Base32 Encoded: JBSWY3DPEBLW64TMMQQQ====
Hello World!
Kodning och avkodning Base16
Bas64-modulen innehåller också kodnings- och avkodningsfunktioner för Base16. Bas 16 benämns oftast hexadecimal . Dessa funktioner liknar både Base64- och Base32-funktionerna:
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)
Detta skulle producera följande utgång:
Base16 Encoded: 48656C6C6F20576F726C6421
Hello World!
Kodning och avkodning ASCII85
Adobe skapade sin egen kodning som heter ASCII85 som liknar Base85, men har sina skillnader. Denna kodning används ofta i Adobe PDF-filer. Dessa funktioner släpptes i Python version 3.4. Annars är funktionerna base64.a85encode()
och base64.a85encode()
liknande de föregående:
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)
Detta matar ut följande:
ASCII85 Encoded: 87cURD]i,"Ebo80
Hello World!
Kodning och avkodning Base85
Precis som Base64-, Base32- och Base16-funktionerna är Base85-kodnings- och avkodningsfunktionerna base64.b85encode()
och 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)
som matar ut följande:
Base85 Encoded: NM&qnZy;B1a%^NF
Hello World!