Как декодировать base64 windows
В Base64 данные делятся на 6 бит и преобразуются в буквенно-цифровые символы (A-Z, a-z, 0-9) и символы (+, /). Преобразует каждые 4 символа, а если последний меньше 4 символов, заполните его символом равенства (=).
Кроме того, RFC 1421 (PEM: Privacy-Enhanced Mail) предусматривает перерыв каждые 64 символа, а RFC 2045 (MIME) предусматривает перерыв каждые 76 символов.
Таблица преобразования для символов Base64 выглядит следующим образом.
5-битные данные | Base32 символа |
---|---|
000000 | A |
000001 | B |
000010 | C |
000011 | D |
000100 | E |
000101 | F |
000110 | G |
000111 | H |
001000 | I |
001001 | J |
001010 | K |
001011 | L |
001100 | M |
001101 | N |
001110 | O |
001111 | P |
010000 | Q |
010001 | R |
010010 | S |
010011 | T |
010100 | U |
010101 | V |
010110 | W |
010111 | X |
011000 | Y |
011001 | Z |
011010 | a |
011011 | b |
011100 | c |
011101 | d |
011110 | e |
011111 | f |
100000 | g |
100001 | h |
100010 | i |
100011 | j |
100100 | k |
100101 | l |
100110 | m |
100111 | n |
101000 | o |
101001 | p |
101010 | q |
101011 | r |
101100 | s |
101101 | t |
101110 | u |
101111 | v |
110000 | w |
110001 | x |
110010 | y |
110011 | z |
110100 | 0 |
110101 | 1 |
110110 | 2 |
110111 | 3 |
111000 | 4 |
111001 | 5 |
111010 | 6 |
111011 | 7 |
111100 | 8 |
111101 | 9 |
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 - это процесс кодирования, при котором двоичные данные преобразуются в ASCII..
Кодирование Base64 в основном используется, чтобы избежать проблем с передачей., которые возникают, когда двоичные данные передаются в текстовые системы, которые не могут правильно обрабатывать эти двоичные данные. В результате информация теряется или искажается во время передачи.
База 64 - это позиционная система нумерации, в которой 64 используется в качестве основы.. Это наивысшая степень, которую можно представить, используя только печатаемые символы ASCII. Это привело к его использованию для шифрования электронной почты, PGP и других приложений. Все известные варианты, которые называются Base64, используют диапазон символов AZ, az и 0-9 в этом порядке для первых 62 цифр, но символы, выбранные для последних двух цифр, значительно различаются от одного к другому. Некоторые из вариантов использования шифрования: сжатие данных, скрытие данных или передача данных в другом формате.
В следующих строках мы увидим как использовать команду base64 для кодирования и декодирования данных в строке или файле. Для выполнения этого примера я собираюсь использовать терминал (Ctrl + Alt + T) системы Ubuntu 20.04 Focal Fossa.
Синтаксис для кодирования с использованием Base64
опции
Некоторые варианты Командная строка, которую можно использовать с командой base64:
- -Помогите → Мы будем использовать эту опцию, чтобы показать справку по использованию base64.
- -do –decode → Мы будем использовать эту опцию, чтобы декодировать файл или строку.
- -i, –ignore-garbage → Эта опция поможет нам, пока мы декодируем игнорировать небуквенные символы.
- -версия → Другой вариант показать информацию о версии, которую мы используем.
Кодировка строк с помощью Base64
Пользователи могут закодировать строку с помощью команды base64. Команда для использования будет следующей:
Эта команда будет кодировать текст в строке, используя base64, и печатать закодированный текст на стандартный вывод.
Мы также можем сохранить закодированный вывод в файл, вместо вывода на стандартный вывод. Следующая команда закодирует текст и сохранит результат в файл с именем "encodedfile.txt«:
к просмотреть содержимое закодированного файла, мы можем использовать команду кошка, как вы можете видеть на предыдущем снимке.
Строка декодирования
Мы можем декодировать текст в кодировке base64 с помощью опции –decode или -d. Для декодирования текста в кодировке base64 '4oCcdGV4dG8gZGUgZWplbXBsb + KAnQo =', команда будет такой:
Эта команда напечатает исходный текст на стандартный вывод как показано на скриншоте выше.
Мы также сможем сохранить декодированный вывод в файл, а не на стандартный вывод. Следующая команда декодирует закодированный текст и сохранит исходный текст в файле с именем "Расшифрованный файл .txt"
к просмотреть содержимое декодированного файла, мы можем использовать команду кошка.
Кодирование текстового файла
Команда base64 также можно использовать для кодирования текстового файла. Если бы нас интересовало кодирование текстового файла с именем 'archivotext.txt', используйте следующую команду:
Эта команда закодирует указанный текстовый файл и распечатает его закодированную форму на стандартный вывод.
также мы можем сохранить закодированный вывод в файл, а не выводить его на стандартный вывод. Следующая команда преобразует текст в файле с помощью base64 и сохранит вывод в другой файл с именем "encodedfile.txt »:
к просмотреть содержимое закодированного файла, мы можем использовать команду кошка.
Расшифровать текстовый файл
к декодировать закодированный текстовый файл, нам нужно будет использовать параметр –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 младших бит, два старших бита игнорируются.
Схематично такое "деление три к четырем" можно представить себе так:
Основываясь на этом принципе, мы можем закодировать любую двоичную информацию в текст, причем не очень сильно увеличивая ее объем (на 30%). Затем наша информация через почтовый сервер попадет к нужному адресату, почтовик которого декодирует текст в двоичный файл.
Все довольны, все смеются.
"Но..", скажите Вы, - "что делать, если у нас нет трех байтов? Есть только один или два!" В этом случае в конец четырех символьного стринга добавляется символ = (равно). Если не хватает (до трех) одного байта, то добавляется один символ "равно": если не хватает двух байт, то добавляются два символа "равно": Что радует: с символами "равно" надо разбираться только один раз - при чтении конца файла.
На этом вроде бы все.
Нет, еще не все. Формат base64 имеет ограничение - общая длина строки, состоящая из 4-х символьных стрингов составляет 72 символа (за исключением самой последней строки - там уже сколько получится).
- Имеющейся почтовой программой сохранить в файл какое-нибудь письмо. Письмо, естественно, надо выбрать со вложенным файлом. При сохранении письма, тип файла следует выбрать "почтового формата" (e-mail message), например *.msg или *.eml
- Включить самый мощный текстовый редактор - Notepad ("Блокнот") и открыть сохраненный файл письма. Тем, у кого п.2 не получился с первого раза - тип файла при открытии его "Блокнотом" надо указать "Все файлы" (*.*)
- В "Блокноте" (а если файл большой, то в 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.
Функция может не работать в некоторых версиях броузеров.
Читайте также: