Как декодировать base64 windows

Обновлено: 07.07.2024

В Base64 данные делятся на 6 бит и преобразуются в буквенно-цифровые символы (A-Z, a-z, 0-9) и символы (+, /). Преобразует каждые 4 символа, а если последний меньше 4 символов, заполните его символом равенства (=).

Кроме того, RFC 1421 (PEM: Privacy-Enhanced Mail) предусматривает перерыв каждые 64 символа, а RFC 2045 (MIME) предусматривает перерыв каждые 76 символов.

Таблица преобразования для символов Base64 выглядит следующим образом.

5-битные данныеBase32 символа
000000A
000001B
000010C
000011D
000100E
000101F
000110G
000111H
001000I
001001J
001010K
001011L
001100M
001101N
001110O
001111P
010000Q
010001R
010010S
010011T
010100U
010101V
010110W
010111X
011000Y
011001Z
011010a
011011b
011100c
011101d
011110e
011111f
100000g
100001h
100010i
100011j
100100k
100101l
100110m
100111n
101000o
101001p
101010q
101011r
101100s
101101t
101110u
101111v
110000w
110001x
110010y
110011z
1101000
1101011
1101102
1101113
1110004
1110015
1110106
1110117
1111008
1111019
111110+
111111-

Например, если вы конвертируете «Hello» с помощью Base64, это будет следующим образом.

1. Сделайте это двоичным представлением.

2. Разделять каждые 6 бит. Если он меньше 6 бит, дополните его "0" в конце.

3. Преобразуйте в символы с помощью таблицы преобразования. Преобразуйте каждые 4 символа, и если оно меньше 4 символов, дополните конец знаком «=».

4. Соедините все символы, чтобы получить результат преобразования Base64.

Может быть было где-то здесь уже, но по крайней мере я не нашел.

Иногда нужно файл закодировать в текстовый вид при помощи кодировки base64, или наоборот раскодировать.

Раньше для этого я использовал утилиту base64.exe или Total Commander
Но проблема в том, что это сторонние инструменты.

Оказывается можно обойтись средствами ОС.
Есть в составе ОС Windows утилита certutil.exe предназначенная для работы с сертификатами.
Так вот, при помощи этой утилиты и можно кодировать/декодировать в/из base64 любые файлы. Для этого используются ключи -encode и -decode соответственно.

Пример:
Имеем текстовый файл file.txt с текстом: "Hello, world!"

на выходе имеем файл file.b64:

В общем как-то так
Век живи, век учись

  • Serge Yolkin
  • Разработчик
  • Неактивен

Ага. Она ещё и хэш SHA1 считать умеет.

P.S. И не только SHA1, ещё и SHA256, SHA384, SHA512, MD2, MD4, MD5, но параметр HashAlgorithm обязательно должен быть в ВЕРХНЕМ РЕГИСТРЕ.

  • Flasher
  • Заблокирован
  • Неактивен











Есть в составе ОС Windows утилита certutil.exe

На XP SP3 по умолчанию нет.

или Total Commander
Но проблема в том, что это сторонние инструменты.


Сторонние, но использовать тот же ТС только для этих целей (или как у некоторых - для FTP) - какое-то сомнительное по КПД занятие.

base64.exe, кстати, есть в двух вариантах. Плюс есть скриптовые решения. Я же периодически обращаюсь к UUDeview.

Есть в Windows 7 Pro, Server 2003 R2 Standard, Server 2008 R2 Standard, Server 2008 R2 Foundation;
По идее должна быть в Vista, 8, Server 2008/2012 Standart;
И всё-таки XP уже является устаревшей и неподдерживаемой ОС.

base64.exe, кстати, есть в двух вариантах. Плюс есть скриптовые решения. Я же периодически обращаюсь к UUDeview.

о base64

В следующей статье мы рассмотрим как мы можем кодировать и декодировать с терминала с помощью base64. Кодирование - это процесс, используемый для преобразования данных в формат, необходимый для эффективной передачи или хранения. Напротив, декодирование - это противоположность методу кодирования, который преобразует закодированные данные в их исходный формат. Base64 - это процесс кодирования, при котором двоичные данные преобразуются в ASCII..

Кодирование Base64 в основном используется, чтобы избежать проблем с передачей., которые возникают, когда двоичные данные передаются в текстовые системы, которые не могут правильно обрабатывать эти двоичные данные. В результате информация теряется или искажается во время передачи.

База 64 - это позиционная система нумерации, в которой 64 используется в качестве основы.. Это наивысшая степень, которую можно представить, используя только печатаемые символы ASCII. Это привело к его использованию для шифрования электронной почты, PGP и других приложений. Все известные варианты, которые называются Base64, используют диапазон символов AZ, az и 0-9 в этом порядке для первых 62 цифр, но символы, выбранные для последних двух цифр, значительно различаются от одного к другому. Некоторые из вариантов использования шифрования: сжатие данных, скрытие данных или передача данных в другом формате.

В следующих строках мы увидим как использовать команду base64 для кодирования и декодирования данных в строке или файле. Для выполнения этого примера я собираюсь использовать терминал (Ctrl + Alt + T) системы Ubuntu 20.04 Focal Fossa.

Синтаксис для кодирования с использованием Base64

опции

справка по base64

Некоторые варианты Командная строка, которую можно использовать с командой base64:

  • -Помогите → Мы будем использовать эту опцию, чтобы показать справку по использованию base64.
  • -do –decode → Мы будем использовать эту опцию, чтобы декодировать файл или строку.
  • -i, –ignore-garbage → Эта опция поможет нам, пока мы декодируем игнорировать небуквенные символы.
  • -версия → Другой вариант показать информацию о версии, которую мы используем.

Кодировка строк с помощью Base64

Пользователи могут закодировать строку с помощью команды base64. Команда для использования будет следующей:

закодировать образец текста

Эта команда будет кодировать текст в строке, используя base64, и печатать закодированный текст на стандартный вывод.

Мы также можем сохранить закодированный вывод в файл, вместо вывода на стандартный вывод. Следующая команда закодирует текст и сохранит результат в файл с именем "encodedfile.txt«:

текст внутри файла base64

к просмотреть содержимое закодированного файла, мы можем использовать команду кошка, как вы можете видеть на предыдущем снимке.

Строка декодирования

Мы можем декодировать текст в кодировке base64 с помощью опции –decode или -d. Для декодирования текста в кодировке base64 '4oCcdGV4dG8gZGUgZWplbXBsb + KAnQo =', команда будет такой:

расшифровать образец текста

Эта команда напечатает исходный текст на стандартный вывод как показано на скриншоте выше.

Мы также сможем сохранить декодированный вывод в файл, а не на стандартный вывод. Следующая команда декодирует закодированный текст и сохранит исходный текст в файле с именем "Расшифрованный файл .txt"

текст внутри файла, декодированного в формате base64

к просмотреть содержимое декодированного файла, мы можем использовать команду кошка.

Кодирование текстового файла

Команда base64 также можно использовать для кодирования текстового файла. Если бы нас интересовало кодирование текстового файла с именем 'archivotext.txt', используйте следующую команду:

кодировка текстового файла

Эта команда закодирует указанный текстовый файл и распечатает его закодированную форму на стандартный вывод.

также мы можем сохранить закодированный вывод в файл, а не выводить его на стандартный вывод. Следующая команда преобразует текст в файле с помощью base64 и сохранит вывод в другой файл с именем "encodedfile.txt »:

файл в кодировке base64

к просмотреть содержимое закодированного файла, мы можем использовать команду кошка.

Расшифровать текстовый файл

к декодировать закодированный текстовый файл, нам нужно будет использовать параметр –decode или -d. Чтобы декодировать содержимое текстового файла в кодировке base64 'закодированный файл .txt', используйте следующую команду:

декодировать содержимое текстового файла

Эта команда декодирует текстовый файл в кодировке base64 и распечатает исходный текст на стандартный вывод.

Мы также сможем сохранить декодированный вывод в файл, а не на стандартный вывод. Следующая команда декодирует закодированный текст и сохранит исходный текст в файле с именем "decodedfile.txtЧто можно будет просмотреть позже с помощью команды кошка:

декодировать текстовый файл

Вот как вы можете использовать base64 для кодирования и декодирования строки или файла с терминала. Важно помнить, что кодировка не похожа на шифрование, и можно легко выявить закодированные данные. По этой причине не рекомендуется использовать шифрование для передачи конфиденциальных данных., Больше информации о Википедия.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Убунлог » Ubuntu » Кодирование и декодирование Base64 из командной строки

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Параметры

Возвращаемое значение

Исключения

s имеет значение null .

Длина s , не учитывая символы пробелов, не равна нулю и не кратна 4.

Недопустимый формат s . s содержит символ в кодировке, отличной от Base 64, больше двух символов заполнения или символ, не являющийся пробелом, среди символов заполнения.

Примеры

В следующем примере используется ToBase64String(Byte[]) метод для преобразования массива байтов в строку ууенкодед (Base-64), а затем вызывается FromBase64String(String) метод для восстановления исходного массива байтов.

Ниже приведен более сложный пример, который создает 20-элементный массив из 32-разрядных целых чисел. Затем он использует BitConverter.GetBytes(Int32) метод для преобразования каждого элемента в массив байтов, который сохраняется в соответствующей позицией в буфере путем вызова Array.Copy(Array, Int32, Array, Int32, Int32) метода. Затем этот буфер передается в ToBase64String(Byte[]) метод для создания строки ууенкодед (Base-64). Затем он вызывает FromBase64String(String) метод для декодирования строки ууенкодед и вызывает BitConverter.ToInt32 метод для преобразования каждого набора из четырех байтов (размер 32-разрядного целого числа) в целое число. Выходные данные в примере показывают, что исходный массив успешно восстановлен.

Комментарии

s состоит из десятичных цифр 64, пробельных символов и замыкающих символов заполнения. Десятичные цифры в порядке возрастания от нуля являются прописными символами "A" и "Z", строчными буквами "a" и "z", цифрами "0" и символами "+" и "/". 64

Символы пробела и их имена в Юникоде и шестнадцатеричные кодовые точки — это вкладка (табуляция символов, U + 0009), Новая строка (перевод строки, U + 000A;), возврат каретки (возврат КАРЕТки, U + 000D) и пустой (пробел, U + 0020). Произвольное число пробелов может быть представлено в s , так как все пробельные символы игнорируются.

Для завершающего заполнения используется символ, равный "=". Конец s может состоять из нуля, одного или двух символов заполнения.

Александр Терехов
дата публикации 17-10-2002 13:16

Вступление

Изначально для передачи электронной почты в Интернет использовался только текст (RFC822). Затем, с развитием компьютерных девайсов, потребовалась возможность передачи нетекстовой информации: аудио, видео, графических файлов, файлов приложений и т.д. Однако почтовые сервера как понимали только текст, так и остались понимать только его. Поэтому появилась необходимость каким-то образом преобразовать двоичный файл в текстовый. Вообще-то способ такого преобразования уже имел место - это UUE кодирование. Но появился еще один - base64. Этот способ используется в спецификации MIME (RFC2045-2049).

Идеология base64

Как известно, байт состоит из восьми битов :)
В один байт можно вложить 256 цифр, от 0 до 255. Однако, если вместо восьми байт использовать только шесть, то объем вложенной информации уменьшается до 64 цифр, от 0 до 63. Теперь главное: любую цифру 6-ти битового байта можно представить в виде печатного символа. 64 символа это не так много, us-ascii символов вполне хватит. Ниже представлен 64-х символьный base64 "алфавит". где код символа A - 0, а код символа / - 63.

Вроде, понятно. Что дальше?

А далее берутся три последовательных байта по восемь бит (всего 24 бита), и побитно делятся на четыре 6-ти битных байта (всего 24 бита).
Немного странно звучит: "шестибитный байт". На самом деле бит восемь, однако используются только 6 младших бит, два старших бита игнорируются.
Схематично такое "деление три к четырем" можно представить себе так:

В приведенном примере три числа 103, 193 и 58 были закодированы в base64 формат. В результате мы получили 4-х символьный стринг Z8E6. Т.о. на практике увидели идеологию перевода двоичной информации в текст по принципу 3 к 4.

Основываясь на этом принципе, мы можем закодировать любую двоичную информацию в текст, причем не очень сильно увеличивая ее объем (на 30%). Затем наша информация через почтовый сервер попадет к нужному адресату, почтовик которого декодирует текст в двоичный файл.

Все довольны, все смеются.
"Но..", скажите Вы, - "что делать, если у нас нет трех байтов? Есть только один или два!" В этом случае в конец четырех символьного стринга добавляется символ = (равно). Если не хватает (до трех) одного байта, то добавляется один символ "равно": если не хватает двух байт, то добавляются два символа "равно": Что радует: с символами "равно" надо разбираться только один раз - при чтении конца файла.
На этом вроде бы все.

Нет, еще не все. Формат base64 имеет ограничение - общая длина строки, состоящая из 4-х символьных стрингов составляет 72 символа (за исключением самой последней строки - там уже сколько получится).

  1. Имеющейся почтовой программой сохранить в файл какое-нибудь письмо. Письмо, естественно, надо выбрать со вложенным файлом. При сохранении письма, тип файла следует выбрать "почтового формата" (e-mail message), например *.msg или *.eml
  2. Включить самый мощный текстовый редактор - Notepad ("Блокнот") и открыть сохраненный файл письма. Тем, у кого п.2 не получился с первого раза - тип файла при открытии его "Блокнотом" надо указать "Все файлы" (*.*)
  3. В "Блокноте" (а если файл большой, то в WordPad'е) откроется примерно нижеследующее:

Полный текст можно посмотреть в файле EMail.txt.

Алгоритм base64 кодирования и декодирования.

Рассмотрим шаг 1.

Как видно из приведенной схемы, проверить установку старшего бита совсем несложно. Если результатом операции получается число 128, значит бит установлен, а если в результате получаем 0, значит старший бит не установлен. Далее в зависимости от полученного результата применим к 6-ти битовому байту битовую операцию OR с числом 1, которая в любом случае применения устанавливает первый (младший) байт в 1. Здесь необходимо учитывать то, что перед применением побитовой операции OR с числом 1 младший бит 6-ти битового байта всегда 0. В случае для первых двух шагов потому, что мы сами обнуляем его при инициализации, для последующих шагов, потому что применяем операцию SHR.

Итак, посмотрим как выглядит реализация первого шага в Паскале:

Повторяем шаги 1 и 2 шесть раз для каждого бита 6-ти битного байта. Одновременно необходимо следить за тем, что если мы обработали восемь бит байта-источника, следует перейти к новому байту. И последнее - если обработаны все три байта-источники, следует выйти из функции кодирования.

Теперь о декодировании.

Примеры.

В первом примере ( b64_Example1 5К) показана работа модуля base64-кодирования (декодирования). Три восьмибитных байта кодируются в 4-х символьный стринг и обратно. Понятно, что это всего лишь пример и при вводе цифр и букв следует соблюдать base64-алфавит.

Конечно, при кодировании надо считывать по 58 байт, а не по 3, как это сделано в примере. Считывание по 58 байт значительно увеличит "скорострельность" утилиты. Но следует учитывать, что это всего лишь пример.

Пример очередного изобретения велосипеда :)

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Читайте также: