Модуль base64

Модуль base64 предоставляет функции для кодирования двоичных данных в печатные символы ASCII и декодирования таких кодировок обратно в двоичные данные. Он предоставляет функции кодирования и декодирования для кодировок, указанных в RFC 4648, который определяет алгоритмы Base16, Base32 и Base64, а также для стандартных кодировок Ascii85 и Base85.

Кодирование и декодирование 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'

который все еще находится в объекте байтов. Для того, чтобы получить строку из этих байт, мы можем использовать Python, decode() метод с 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
# Создайте строку
s = "Hello World!"

# Кодирование строки в байты
b = s.encode("UTF-8")

# Base64 кодирование в байты
e = base64.b64encode(b)

# Декодирование байтов Base64 в строку
s1 = e.decode("UTF-8")

# Печать строки в кодировке Base64
print("Base64 Encoded:", s1)

# Кодирование строки в кодировке Base64 в байты
b1 = s1.encode("UTF-8")

# Декодирование байтов Base64
d = base64.b64decode(b1)

# Декодирование байтов в строку
s2 = d.decode("UTF-8")
print(s2)

Как и следовало ожидать, выводом будет исходная строка:

# Base64 Encoded: SGVsbG8gV29ybGQh
# Hello World! 

Кодирование и декодирование Base32

Модуль base64 также включает функции кодирования и декодирования для Base32. Эти функции очень похожи на функции Base64:

import base64

# Создание строки
s = "Hello World!"

# Кодируем строку в байты
b = s.encode("UTF-8")

# Base32 Кодировать байты
e = base64.b32encode(b)

# Декодирование байтов Base32 в строку
s1 = e.decode("UTF-8")

# Печать строки в кодировке Base32
print("Base32 Encoded:", s1)

# Кодирование строки в кодировке Base32 в байты
b1 = s1.encode("UTF-8")

# Декодирование байтов Base32
d = base64.b32decode(b1)

# Декодирование байтов в строку
s2 = d.decode("UTF-8")
print(s2)

Это даст следующий результат:

# Base32 Encoded: JBSWY3DPEBLW64TMMQQQ====
# Hello World!

Кодирование и декодирование Base16

Модуль base64 также включает функции кодирования и декодирования для Base16. База 16 наиболее часто упоминается как шестнадцатеричное. Эти функции очень похожи на функции Base64 и Base32:

import base64

# Создание строки
s = "Hello World!"

# Кодируем строку в байты
b = s.encode("UTF-8")

# Base16 Кодировать байты
e = base64.b16encode(b)

# Декодирование байтов Base16 в строку
s1 = e.decode("UTF-8")

# Печать строки в кодировке Base16
print("Base16 Encoded:", s1)

# Кодирование строки в кодировке Base16 в байты
b1 = s1.encode("UTF-8")

# Декодирование байтов Base16
d = base64.b16decode(b1)

# Декодирование байтов в строку
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

# Создание строки
s = "Hello World!"

# Кодируем строку в байты
b = s.encode("UTF-8")

# ASCII85 Кодировать байты
e = base64.a85encode(b)

# Декодирование байтов ASCII85 в строку
s1 = e.decode("UTF-8")

# Печать строки в кодировке ASCII85
print("ASCII85 Encoded:", s1)

# Кодирование строки в кодировке ASCII85 в байты
b1 = s1.encode("UTF-8")

# Декодирование байтов ASCII85
d = base64.a85decode(b1)

# Декодирование байтов в строку
s2 = d.decode("UTF-8")
print(s2)

Это выводит следующее:

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

Кодирование и декодирование Base85

Так же , как функции Base64, Base32 и Base16, то функция кодирования и декодирования Base85 является base64.b85encode() и base64.b85decode() :

import base64

# Создание строки
s = "Hello World!"

# Кодируем строку в байты
b = s.encode("UTF-8")

# Base85 Кодировать байты
e = base64.b85encode(b)

# Декодирование байтов Base85 в строку
s1 = e.decode("UTF-8")

# Печать строки в кодировке Base85
print("Base85 Encoded:", s1)

# Кодирование строки в кодировке Base85 в байты
b1 = s1.encode("UTF-8")

# Декодирование байтов Base85
d = base64.b85decode(b1)

# Декодирование байтов в строку
s2 = d.decode("UTF-8")
print(s2)

который выводит следующее:

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