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!


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow