Base64 кодиране и декодиране - Безплатен онлайн инструмент за конвертиране на Base64
Безплатен инструмент за кодиране и декодиране на Base64. Конвертирайте текст към Base64 или декодирайте Base64 низове незабавно. Поддържа стандартно и URL-безопасно кодиране. Не се изисква влизане.
Base64 кодиране/декодиране
Конвертиране на текст към и от Base64 кодиране
Документация
Какво представлява кодирането Base64?
Base64 е начин за преобразуване на всякакви данни, включително двоични данни като изображения, в обикновен текст, съставен само от букви, цифри и няколко символа. Кодерът за base64 преобразува данните в този текстов формат. Декодерът за base64 ги превръща обратно в първоначалните данни. Програмите използват Base64 за безопасно пренасяне на двоични данни през системи като електронна поща или JSON, които очакват обикновен текст.
Base64 използва азбука от 64 знака:
- Главни букви A–Z (26 знака)
- Малки букви a–z (26 знака)
- Цифри 0–9 (10 знака)
- Два символа, обикновено
+и/(2 знака)
Някои системи използват и знак за равенство (=) в края на изхода като допълване. Допълването не е част от азбуката от 64 знака; то просто допълва дължината.
Защо съществува Base64
Много по-стари текстови протоколи, включително електронната поща (SMTP) и някои части на HTTP, са създадени за пренасяне на 7-битов ASCII текст. Те могат да повредят необработени двоични байтове, например байтовете в JPEG изображение. Base64 избягва това, като представя всеки байт само с безопасни печатаеми знаци. Затова прикачените файлове в електронната поща, изображенията, вградени в уебстраници, и двоичните полета в JSON обикновено първо се преобразуват чрез Base64.
Base64 не е компресия и не е шифроване. Кодираният изход винаги е по-голям от входа и всеки може да го декодира без парола или ключ.
Как се използва този инструмент
- Въведете или поставете текст в полето за въвеждане.
- Изберете „Кодиране в Base64“, за да преобразувате текст в Base64, или „Декодиране от Base64“, за да преобразувате низ Base64 обратно в текст.
- Включете преобразуването в реално време, за да се актуализира изходът автоматично, докато въвеждате текст.
- Копирайте резултата с бутона за копиране.
Инструментът чете и записва стандартен Unicode текст, така че букви с диакритични знаци, символи и емоджита се кодират и декодират правилно, а не само обикновени английски букви.
Как работи кодирането Base64
Base64 преобразува всеки 3 входни байта (24 бита) в 4 изходни знака (всеки съдържа 6 бита), защото 24, разделено на 6, е равно на 4.
- Вземете входните байтове и ги запишете в двоичен вид.
- Групирайте битовете в групи от 24 бита (3 байта).
- Разделете всяка група от 24 бита на четири части от по 6 бита.
- Намерете всяко 6-битово число (от 0 до 63) в азбуката Base64 и запишете съответстващия знак.
Ако дължината на входа не е кратна на 3, последната група е непълна. Кодерът я допълва с нулеви битове, след което добавя = знака към изхода, така че резултатът да се получи в групи от 4:
- Един останал байт дава 2 знака Base64 плюс
==. - Два останали байта дават 3 знака Base64 плюс един
=.
Пример за кодиране Base64
Кодиране на думата „Hello“:
- ASCII стойности: 72, 101, 108, 108, 111
- Двоичен вид:
01001000 01100101 01101100 01101100 01101111 - Първите 3 байта (24 бита) се разделят на четири групи от по 6 бита:
010010 000110 010101 101100, които са числата 18, 6, 21, 44 → знациS,G,V,s. - Останалите 2 байта (16 бита) се разделят на три групи от по 6 бита, като в края се добавят 2 нулеви бита:
011011 000110 111100, които са числата 27, 6, 60 → знациb,G,8. - Тъй като са останали 2 байта, в края се добавя един знак
=. - Резултат:
SGVsbG8=
Декодирането обръща тези стъпки: всеки знак се преобразува обратно в своето 6-битово число, битовете се обединяват в поток и този поток отново се прочита като байтове от 8 бита.
Формула за дължината на кодиран Base64 текст
За вход от n байта кодираната дължина в знаци е:
encoded_length = 4 × ⌈n / 3⌉
където ⌈x⌉ означава закръгляване нагоре до най-близкото цяло число. Формулата показва защо изходът на Base64 винаги е приблизително с една трета по-голям от входа: 4 изходни знака за всеки 3 входни байта означават увеличение с 33%.
Къде се използва Base64
- Прикачени файлове в електронната поща (MIME). Електронната поща е създадена за текст, затова прикачените файлове се преобразуват в Base64 преди изпращане, което прави прикачения файл приблизително с 33% по-голям от оригинала.
- URI адреси за данни. Малки изображения могат да се вграждат директно в HTML или CSS като текст, например
data:image/png;base64,iVBORw0KGgo..., без да е необходима отделна заявка за файл. Това работи най-добре за малки файлове, тъй като големите увеличават размера на страницата и не могат да се кешират отделно. - API и JSON. JSON няма вграден начин за съхраняване на необработени двоични данни, затова двоичните файлове, изпращани чрез JSON API, често първо се кодират в Base64.
- HTTP Basic Authentication. Заглавката
Authorizationкодира потребителско име и парола като Base64, напримерAuthorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. Само по себе си това не е сигурно; идентификационните данни могат да бъдат прочетени от всеки, който ги прихване, затова Basic Authentication трябва да се използва само през HTTPS. - JSON Web Tokens (JWT). Всяка от трите части на JWT се кодира с Base64URL — вариант, безопасен за поставяне в URL адрес.
- Съхраняване на двоични данни като текст. Бази данни или конфигурационни файлове, които приемат само текст, понякога съхраняват двоични данни като низ Base64.
Base64 в сравнение с други кодирания
Base64, безопасен за URL адреси заменя стандартните знаци + и / със - и _, тъй като + и / имат специално значение в URL адресите. Използва се за JWT, параметри на URL заявки и имена на файлове. Този инструмент създава стандартен изход Base64; преобразуването в безопасен за URL адреси формат изисква само замяната на тези два знака.
Base32 използва азбука от 32 знака, така че всеки знак носи 5 бита вместо 6. Той преобразува всеки 5 байта в 8 знака, с добавка от 60% (8 ÷ 5 = 1,6), в сравнение с 33% при Base64. Base32 се избира, когато изходът трябва да се въвежда на ръка или да се прочита по телефона, защото избягва смесването на главни и малки букви и лесно объркваемите знаци.
Шестнадесетичният запис използва 16 знака (0–9, A–F) и изисква 2 знака за всеки байт, което удвоява размера (добавка 100%). Той често се използва за изобразяване на хешове, цветове и MAC адреси, когато четливостта е по-важна от компактния размер.
Кога да не се използва Base64
Base64 увеличава размера и разхода на процесорно време, затова не е подходящ за големи файлове, изпращани по мрежа; директното изпращане на необработените двоични данни е по-малко и по-бързо. Не бива да се разчита на него за скриване на чувствителна информация като пароли или API ключове, тъй като декодирането му не изисква тайна. За съхраняване на големи файлове обикновено е по-добре да се използва двоичен тип колона в база данни или услуга за съхранение на файлове, отколкото дълъг низ Base64 в текстово поле.
Често срещани грешки
- Пропускане на преобразуването към UTF-8. Кодирането на текст с букви с диакритични знаци или емоджита, без предварително преобразуване в байтове UTF-8, може да повреди изхода.
- Премахване на допълването. Някои системи премахват крайните знаци
=. Повечето декодиращи устройства все пак могат да работят, ако дължината на низа бъде допълнена до кратна на 4, но не всички ги приемат, затова е по-безопасно допълването да се запази. - Останали нови редове. По-старите MIME-базирани кодери вмъкват нов ред на всеки 76 знака; повечето съвременни декодери очакват една непрекъсната последователност без тях.
- Смесване на варианти. Стандартният Base64 и безопасният за URL адреси Base64 използват различни знаци за едни и същи две позиции в азбуката; декодирането с неправилния вариант дава невалидни данни или грешка.
Често задавани въпроси
Base64 форма на шифроване ли е? Не. Това е обратимо текстово кодиране, а не шифроване. Всеки може незабавно да декодира низ Base64 без парола. Използвайте алгоритъм за шифроване като AES, ако данните трябва да останат секретни.
Защо Base64 увеличава размера на данните? Защото използва един цял знак, за да пренася само 6 бита, докато един необработен байт съдържа 8 бита. Преобразуването на 3 байта (24 бита) в 4 знака означава, че изходът е 4/3, или приблизително 33%, по-голям от входа.
Може ли Base64 да кодира изображения и други двоични файлове? Да. Всеки двоичен файл, включително изображения, PDF файлове и аудиофайлове, може да бъде кодиран в Base64 и декодиран обратно байт по байт. Това често се използва за малки изображения, вградени в HTML или CSS, но е неподходящо за големи файлове.
Каква е разликата между Base64 и Base64URL?
Base64URL заменя стандартните знаци + и / със - и _, така че резултатът да може безопасно да се поставя в URL адрес или име на файл без допълнително екраниране. JWT използва Base64URL по тази причина.
Защо низът ми Base64 дава грешка „невалиден“ при декодиране?
Най-честите причини са знаци, които не принадлежат към азбуката Base64, например - и _, използвани от безопасния за URL адреси вариант, или низ, чиято дължина е с едно повече от кратно на 4. Никой валиден низ Base64 няма такава дължина. Декодирането също се проваля, когато декодираните байтове не са валиден текст UTF-8. Този инструмент игнорира интервалите и новите редове в низа и все пак декодира низ, чието крайно допълване = е премахнато.
Откъде произлиза Base64? Техниката датира от ранните схеми за изпращане на двоични данни чрез пощенски системи, поддържащи само текст, през 1980-те години и е стандартизирана официално като част от MIME в RFC 2045 през 1996 г. Актуалната референтна спецификация за Base64, Base32 и Base16 е RFC 4648.