Вступление
BASE64 — это алгоритм бинарного к текстовому шифрованию. Он преобразует ASCII в представление Base64.
Процесс конверсии
Мы знаем, что письмо UTF-8 состоит из 8 бит. Base64 преобразует предоставленную строку в двоичное представление, а затем удаляет последние две двоичные цифры из двоичного представления каждой буквы UTF-8 из предоставленной строки. После этого каждая буква представлена с 6 битами. Помните, что общее количество битов всей строки должно оставаться неизменным, например, если строка содержит 6 значений ASCII, соответствующие битам, Base64 преобразует бинарные значения в 8 групп из 6 битов. Затем 6-битные группы преобразуются в соответствующие целочисленные значения (0-63). После этого мы преобразуем целочисленные значения в их соответствующие значения ASCII, используя диаграмму преобразования Base64. Затем используется другая диаграмма для преобразования соответствующих значений ASCII в исходные значения ASCII. Кроме того, при использовании Base64 на изображениях нам нужно использовать буфер для преобразования строки Base64 в двоичное представление изображения.
string => binary => binary in the groups of 6 bits => base64 ascii string => original string
Где он используется
- Он используется для хранения и передачи контента на носителях, который поддерживает только ASCII.
- Он используется для обеспечения того, чтобы данные оставались нетронутыми без каких -либо изменений в передаче.
- Он также используется при отправке электронных писем.
- Он используется для кодирования двоичных данных, чтобы они могли быть включены в URL
Примеры
- Предположим, вы хотите отправить изображение на среду, которая поддерживает только ASCII, вам придется конвертировать его в ASCII с помощью BASE64, а затем отправить его.
Закодированное увеличение размера
Когда вы шифруете строку, используя Base64, кодированная строка будет больше, чем фактическая строка. Это связано с тем, что символ Base64 представлен 6 битами, тогда как нормальный символ представлен 8 битами, что увеличивает количество букв в строке Base64, что увеличивает размер строки. Когда вы используете Base64 на строке, размер строки увеличивается, по крайней мере, увеличивается на 133%
Проблема Unicode
Строки DOM представляют собой 16-битные (UTF-16) строки, которые создают проблему для Base64, поскольку он поддерживает только 8-битные строки (UTF-8). Вы можете решить эту проблему, преобразив строку в UTF-8, и есть и другие методы, чтобы сделать то же самое. Код для преодоления этой проблемы путем преобразования строки в UTF-8 выглядит следующим образом:
function utf16_To_utf8(str) { let utf8 = unescape(encodeURIComponent(str)); return utf8; } btoa(utf16_To_utf8("pog"));)
Демонстрация
Рабочая демонстрация алгоритма Base64 в реальном сценарии, в котором мы переносим изображение из источника в его назначение, используя Base64, потому что мы можем переносить данные ASCII только по среде передачи. Приведенная ниже демонстрация используется для преобразования .jpg
Файл в .png
файл.
const fs = require('fs'); const base64 = fs.readFileSync('./original.jpg', 'base64'); // convert the binary text in the image file to a base64 string const buffer = Buffer.from(base64, 'base64'); // generate a base64 buffer of the base64 string, a buffer of the base64 string is required to convert the string back to graphics fs.writeFileSync('new.jpg', buffer); // write the buffer into a file fs.writeFileSync('new.png', buffer); // you can even convert a jpg into png using this technique // the process // image => binary => base64 string => buffer => image
Кредиты
- [Алекс Лор] для исправления ошибки, а также для обмена полезной информацией, которая будет добавлена в блог.
Оригинал: «https://dev.to/hamiecod/base64-explained-1il4»