Python Language
Модуль base64
Поиск…
Вступление
Базовая кодировка 64 представляет собой общую схему кодирования двоичного кода в формате строки ASCII с использованием radix 64. Модуль base64 является частью стандартной библиотеки, что означает, что он устанавливает вместе с Python. Понимание байтов и строк имеет решающее значение для этой темы и может быть рассмотрено здесь . В этом разделе объясняется, как использовать различные функции и числовые базы модуля base64.
Синтаксис
- base64.b64encode (s, altchars = None)
- base64.b64decode (s, altchars = None, validate = False)
- base64.standard_b64encode (ы)
- base64.standard_b64decode (ы)
- base64.urlsafe_b64encode (ы)
- base64.urlsafe_b64decode (ы)
- base64.b32encode (ы)
- base64.b32decode (ы)
- base64.b16encode (ы)
- base64.b16decode (ы)
- 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 (б)
параметры
параметр | Описание |
---|---|
base64.b64encode(s, altchars=None) | |
s | Байт-подобный объект |
altchars | Байт-подобный объект длиной 2+ символов для замены символов «+» и «=» при создании алфавита Base64. Дополнительные символы игнорируются. |
base64.b64decode(s, altchars=None, validate=False) | |
s | Байт-подобный объект |
altchars | Байт-подобный объект длиной 2+ символов для замены символов «+» и «=» при создании алфавита Base64. Дополнительные символы игнорируются. |
утверждать | Если valide - True, символы, не находящиеся в нормальном алфавите Base64 или альтернативном алфавите, не будут отбрасываться до проверки дополнения |
base64.standard_b64encode(s) | |
s | Байт-подобный объект |
base64.standard_b64decode(s) | |
s | Байт-подобный объект |
base64.urlsafe_b64encode(s) | |
s | Байт-подобный объект |
base64.urlsafe_b64decode(s) | |
s | Байт-подобный объект |
b32encode(s) | |
s | Байт-подобный объект |
b32decode(s) | |
s | Байт-подобный объект |
base64.b16encode(s) | |
s | Байт-подобный объект |
base64.b16decode(s) | |
s | Байт-подобный объект |
base64.a85encode(b, foldspaces=False, wrapcol=0, pad=False, adobe=False) | |
б | Байт-подобный объект |
foldspaces | Если foldspaces - True, символ 'y' будет использоваться вместо 4 последовательных пробелов. |
wrapcol | Число символов перед новой строкой (0 не означает новых строк) |
подушечка | Если pad является True, байты заполняются до кратного 4 перед кодированием |
саман | Если adobe is True, закодированный секвенсор с рамкой '<~' и '' ~>, используемый в продуктах Adobe |
base64.a85decode(b, foldspaces=False, adobe=False, ignorechars=b'\t\n\r\v') | |
б | Байт-подобный объект |
foldspaces | Если foldspaces - True, символ 'y' будет использоваться вместо 4 последовательных пробелов. |
саман | Если adobe is True, закодированный секвенсор с рамкой '<~' и '' ~>, используемый в продуктах Adobe |
ignorechars | Байт-подобный объект символов для игнорирования в процессе кодирования |
base64.b85encode(b, pad=False) | |
б | Байт-подобный объект |
подушечка | Если pad является True, байты заполняются до кратного 4 перед кодированием |
base64.b85decode(b) | |
б | Байт-подобный объект |
замечания
До выхода Python 3.4 функции кодирования и декодирования base64 работали только с bytes
или типами bytearray
. Теперь эти функции принимают любой байтоподобный объект .
Кодировка и декодирование Base64
Чтобы включить модуль base64 в ваш скрипт, вы должны сначала импортировать его:
import base64
Для кодирования и декодирования base64 оба требуют байтового объекта . Чтобы получить нашу строку в байтах, мы должны закодировать ее, используя встроенную функцию кодирования Python. Чаще всего используется UTF-8
, однако полный список этих стандартных кодировок (включая языки с разными символами) можно найти здесь, в официальной документации на Python. Ниже приведен пример кодирования строки в байтах:
s = "Hello World!"
b = s.encode("UTF-8")
Результатом последней строки будет:
b'Hello World!'
Префикс b
используется для обозначения значения байтового объекта.
Чтобы Base64 закодировать эти байты, мы используем base64.b64encode()
:
import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
print(e)
Этот код выводит следующее:
b'SGVsbG8gV29ybGQh'
который все еще находится в объекте bytes. Чтобы получить строку из этих байтов, мы можем использовать метод decode()
Python с UTF-8
:
import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
s1 = e.decode("UTF-8")
print(s1)
Результатом будет:
SGVsbG8gV29ybGQh
Если мы хотим кодировать строку и затем декодировать, мы могли бы использовать метод 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)
Как вы и ожидали, выход будет исходной строкой:
Base64 Encoded: SGVsbG8gV29ybGQh
Hello World!
Кодирование и декодирование Base32
Модуль base64 также включает функции кодирования и декодирования для Base32. Эти функции очень похожи на функции 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)
Это приведет к следующему результату:
Base32 Encoded: JBSWY3DPEBLW64TMMQQQ====
Hello World!
Основание кодирования и декодирования16
Модуль base64 также включает функции кодирования и декодирования для Base16. Базу 16 чаще всего называют шестнадцатеричной . Эти функции очень похожи на функции Base64 и 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)
Это приведет к следующему результату:
Base16 Encoded: 48656C6C6F20576F726C6421
Hello World!
Кодирование и декодирование ASCII85
Adobe создала собственную кодировку под названием ASCII85, которая похожа на Base85, но имеет свои отличия. Эта кодировка часто используется в файлах Adobe PDF. Эти функции были выпущены в Python версии 3.4. В противном случае функции base64.a85encode()
и base64.a85encode()
аналогичны функциям предыдущего:
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)
Это обеспечивает следующее:
ASCII85 Encoded: 87cURD]i,"Ebo80
Hello World!
Кодировка и декодирование Base85
Подобно функциям Base64, Base32 и Base16, функции кодирования и декодирования base64.b85encode()
- base64.b85encode()
и 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)
который выводит следующее:
Base85 Encoded: NM&qnZy;B1a%^NF
Hello World!