admin / 23.11.2017
Содержание
Base64-encoded data takes about 33% more space than the original data, but it is useful when you want to transfer compact and encrypted data from an aplication to another (for example from cliend side /browser to a script on server and vice versa).
In this page it is presented a JavaScript object that can be used to encode / decode data with MIME base64 . This object is fully compatible with UTF-8 encoding.
— Source code of Base64 object, from http://www.webtoolkit.info/javascript-base64.html. /** * Base64 encode / decode * http://www.webtoolkit.info/ **/ var Base64 = { // private property _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", // public method for encoding encode : function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = Base64._utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); } return output; }, // public method for decoding decode : function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = Base64._utf8_decode(output); return output; }, // private method for UTF-8 encoding _utf8_encode : function (string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, // private method for UTF-8 decoding _utf8_decode : function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } } — Usage:
1. Copy the Base64 object into your JavaScript script.
2. To encode a string, calls the encode() method: Base64.encode(‘string’); .
3. To decode a base64-encoded string, calls the decode() method: Base64.decode(‘base64-string’); .
— Example. The text added into a textarea will be encoded with base64, and added into an input form field. The base64-encoded string added in that input field can be decoded and displayed into an Alert window. <form action="#" method="post"> Enter a text:<br/> <textarea name="txtstr" id="txtstr" cols="26" rows="5"></textarea> <button id="btnencode64">Encode</button><br/><br/> Base64 encoded data:<br/> <input type="text" name="str64" id="str64" size="34" /> <button id="btndecode64">Decode</button> </form> <script type="text/javascript"> // Here add the code of Base64 object // register onclick events for encode button document.getElementById(‘btnencode64’).onclick = function() { var txt_string = document.getElementById(‘txtstr’).value; // gets data from textarea // encode data and adds it in #str64 element document.getElementById(‘str64’).value = Base64.encode(txt_string); return false; } // register onclick events for decode button document.getElementById(‘btndecode64’).onclick = function() { // decode data from input text field and display it into an alert window var str64 = Base64.decode(document.getElementById(‘str64’).value); alert(str64); return false; } </script> Demo:
— WebMaster, WebDesigner : MarPlo —
<mark> <embed> <span><p>Free corses: <mark>coursesweb.net</mark> for Web Development.</p>
:focus :hover :activea:hover { font-weight: bold; color: #00da01; }
toPrecision(x) toFixed(x) floor(x)var num = 12.34567; num = num.toFixed(2); alert(num); // 12.35
[) file() readfile()$arr = file(«a_file.txt», FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); var_export($arr);
Base64 Decode / EncodeBase64 – онлайн декодировщикЧто такое Base64? Base64 представляет собой особый алгоритм, который позволяет привести любую информацию в 64-разрядный вид. Как мы знаем, обычно единица информации представлена в бите. Восемь бит формируют байт. Но, Base64 предполагает использование не 8 бит, а 6. Как известно в одном байте можно поместить 256 цифр, начиная с 0 и заканчивая 255. В случае с шестибитным байтом умещается только 64 символа, от 0 до 63. Казалось бы, это не дает ничего полезного, а только увеличивает размер представленной информации. На самом же деле, этот алгоритм очень важен и полезен. Он позволяет присвоить каждой цифре из такого байта печатный символ. How to Encode and Decode Strings with Base64 in JavaScriptНужно всего лишь 64 символа, это не так уж и много, поэтому для этого используется ASCII (стандартная, американская кодировка). Это значит, что Base64 имеет свой собственный «алфавит», который и обеспечивается названной кодировкой. Сам алфавит можно разделить на несколько групп:— Буквы английского алфавита в верхнем регистре – ABCDEFGHIJKLMNOPQRSTUVWXYZ; — Эти же буквы, но в нижнем регистре – abcdefghijklmnopqrstuvwxyz; — Цифры от 0 до 9 – 0123456789; — Дополнительные символы – «+» и «/»; — Целиком это будет выглядеть так – «ABCDEFGHIJKLMNOPQRSTUVWXYZ — abcdefghijklmnopqrstuvwxyz0123456789+/». Поскольку здесь и есть 64 символа, можно — сделать вывод, что «А» это «0», а «/» это «63». Далее берется три обыкновенных восьмибитных байт, то есть 24 бита, и разбиваются на 4 группы по 6 бит. Каждая из таких четырех групп и будет являться шестибитным байтом. Хотя по сути, это все тот же стандартный байт из восьми бит, но используются в нем только младшие шесть бит, а два старших просто отбрасываются. Для чего это нужно?Используется такой алгоритм в разных сферах, особенно в веб-разработке. Так вышло, что для передачи данных, как правило, используется не бинарный код, а текст (email, xml, url схемы, html и прочее). Но, что же делать если нужно передать именно бинарные данные? Все просто, с помощью Base64 Encode их в текст. Для веб-мастеров данный алгоритм пригодится в таких сферах:— Для включения изображения (или других данных) в email; — Для сохранения изображений в базах данных; — При передаче картинок и прочих данных в XML; — Data:URL схемы для картинок; — Можно ли использовать Base64 для шифрования паролей? — Base64 легко можно обратно расшифровать. Поэтому для шифрования паролей данный метод — использовать нельзя. — Base64 в бесплатных шаблонах Как пользоваться декодировщиком Base64?Наш инструмент для декодирования Base64 очень простой и интуитивно понятен. Все, что от вас требуется это просто вставить код Base64, который вы хотите раскодировать в форму нашего сервиса, и во второй форме сразу же появится раскодированный текст. Здесь же вы можете не только раскодировать, но еще и закодировать в Base64 любой текст, для этого нужно просто сменить направление специальной кнопкой. |
Simply use the form below
Live mode OFF
Decodes while you type or paste (strict format).Note that decoding of binary data (like images, documents, etc.) does not work in live mode.
Details of the encoding
Base64 is a generic term for a number of similar encoding schemes that encode binary data by treating it numerically and translating it into a base 64 representation. The Base64 term originates from a specific MIME content transfer encoding.
Base64 encoding schemes are commonly used when there is a need to encode binary data that needs be stored and transferred over media that are designed to deal with textual data. This is to ensure that the data remains intact without modification during transport. Base64 is used commonly in a number of applications including email via MIME, and storing complex data in XML.
Design
The particular choice of characters to make up the 64 characters required for base varies between implementations. The general rule is to choose a set of 64 characters that is both part of a subset common to most encodings, and also printable. This combination leaves the data unlikely to be modified in transit through systems, such as email, which were traditionally not 8-bit clean. For example, MIME’s Base64 implementation uses A-Z, a-z, and 0-9 for the first 62 values. Other variations, usually derived from Base64, share this property but differ in the symbols chosen for the last two values; an example is UTF-7.
Example
A quote snippet from Thomas Hobbes’s Leviathan:
«Man is distinguished, not only by his reason, but …«
represented as an ASCII byte sequence is encoded in MIME’s Base64 scheme as follows:
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCAuLi4=
In the above quote the encoded value of Man is TWFu.
Encoded in ASCII, M, a, n are stored as the bytes 77, 97, 110, which are 01001101, 01100001, 01101110 in base 2. These three bytes are joined together in a 24 bit buffer producing 010011010110000101101110. Packs of 6 bits (6 bits have a maximum of 64 different binary values) are converted into 4 numbers (24 = 4 * 6 bits) which are then converted to their corresponding values in Base64.
Text content | M | a | n | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ASCII | 77 | 97 | 110 | |||||||||||||||||||||
Bit pattern | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
Index | 19 | 22 | 5 | 46 | ||||||||||||||||||||
Base64-encoded | T | W | F | u |
As this example illustrates, Base64 encoding converts 3 uncoded bytes (in this case, ASCII characters) into 4 encoded ASCII characters.
At Wikipedia you can read more about the encoding.
Base64 — это группа аналогичных схем кодирования двоичного текста, которые представляют двоичные данные в формате строки ASCII путем перевода их в представление radix-64. Термин Base64 происходит от определенной кодировки передачи содержимого MIME.
Каждая цифра base64 представляет ровно 6 бит данных. Таким образом, три 8-битных байта (т. е. всего 24 бита) могут быть представлены четырьмя 6-битными цифрами base64.
Определенный набор из 64 символов, выбранных для представления 64 мест-значений для базы, варьируется между реализациями. Общая стратегия состоит в том, чтобы выбрать 64 символа, которые являются членами подмножества, общего для большинства кодировок, а также для печати. Эта комбинация оставляет данные, которые вряд ли будут изменены при передаче через информационные системы, такие как электронная почта, которые традиционно не были 8-битными чистыми. Например, реализация Base64 MIME использует A-Z, A-z и 0-9 для первых 62 значений.
Другие варианты разделяют это свойство, но отличаются символами, выбранными для последних двух значений; примером является UTF-7.
Самые ранние экземпляры этого типа кодирования были созданы для коммутируемой связи между системами, работающими под управлением той же ОС — например, uuencode для UNIX, BinHex для TRS-80 (позже адаптированный для Macintosh) — и поэтому могли бы сделать больше предположений о том, какие символы были безопасны для использования. Например, uuencode использует прописные буквы, цифры и много знаков препинания, но не строчные.
Ресурсы:
Если Интернет является информационной магистралью, то в случае с электронной почтой имеются ограничения. Через нее могут передаваться только небольшие данные.
Транспортная система электронной почты предназначена только для обычного ASCII текста. Попытка отправить текст на других языках или произвольные файлы — это как получить грузовик через овраг.
При попытке отправить текст на других языках или отправить случайный файл — это как попытаться проехать на большом грузовике через маленькое ущелье.
Мы должны разобрать наш грузовик на части и переправить эти части с одного конца на другой.
То же самое происходит, когда вы отправляете вложения по электронной почте. В процессе, известном как кодирование, двоичные данные преобразуются в текст ASCII, который можно без проблем транспортировать по электронной почте. В конце пути данные декодируются и мы получаем исходный файл.
Одним из методов кодирования данных в виде обычного текста ASCII является Base64.
Это один из способов, используемых стандартом MIME для отправки данных, отличных от обычного текста.
Кодирование Base64 занимает три байта, каждый из которых состоит из восьми битов, и представляет их в виде четырех печатных символов в стандарте ASCII. По сути, делается это в два шага.
Первым шагом является преобразование трех байтов в четыре числа из шести бит. Каждый символ в стандарте ASCII состоит из семи битов. Base64 использует только 6 бит (что соответствует 2 ^ 6 = 64 символам), чтобы гарантировать, что закодированные данные могут быть пригодны для печати и читаемы «по-человечески».
Ни один из специальных символов, доступных в таблице ASCII, не используется. 64 символа (отсюда и название Base64) — это 10 цифр, 26 символов в нижнем регистре, 26 символов в верхнем регистре, а также символы «+» и «/».
Например, три байта равны 155, 162 и 233, соответствующий (и пугающий) поток битов равен 100110111010001011101001, который, в свою очередь, соответствует 6-битовым значениям 38, 58, 11 и 41.
Эти цифры преобразуются в символы из таблицы ASCII на втором шаге с использованием таблицы «Base64 encoding».
6-битные значения нашего примера преобразуются в последовательность ASCII «m6Lp».
Этот двухэтапный процесс применяется ко всей последовательности байтов, которые закодированы. Чтобы гарантировать, что закодированные данные могут быть правильно напечатаны и не превышают ограничения почтового сервера, символы новой строки добавляются так, чтобы общая длина строк не превышала 76 символов. Символы новой строки кодируются, как и все остальные данные.
В процессе кодирования мы можем столкнуться с проблемой. Если размер исходных данных в байтах кратен трем, все работает нормально.
Если это не так, мы можем получить один или два 8-битных байта. Однако для правильного кодирования нам нужно ровно три байта.
Решение состоит в том, чтобы добавить достаточно байтов со значением «0» для создания 3-байтовой группы. Два таких значения добавляются, если у нас есть один дополнительный байт данных, один добавляется для двух дополнительных байтов.
Конечно, эти искусственные завершающие «0» не могут быть закодированы, используя таблицу кодирования ниже. Они должны быть представлены 65-м символом.
Отступом Base64 является «=». Естественно, он может появляться только в конце закодированных данных.
Value | Char | Value | Char | Value | Char | Value | Char | |||
---|---|---|---|---|---|---|---|---|---|---|
0 | A | 16 | Q | 32 | g | 48 | w | |||
1 | B | 17 | R | 33 | h | 49 | x | |||
2 | C | 18 | S | 34 | i | 50 | y | |||
3 | D | 19 | T | 35 | j | 51 | z | |||
4 | E | 20 | U | 36 | k | 52 | 0 | |||
5 | F | 21 | V | 37 | l | 53 | 1 | |||
6 | G | 22 | W | 38 | m | 54 | 2 | |||
7 | H | 23 | X | 39 | n | 55 | 3 | |||
8 | I | 24 | Y | 40 | o | 56 | 4 | |||
9 | J | 25 | Z | 41 | p | 57 | 5 | |||
10 | K | 26 | a | 42 | q | 58 | 6 | |||
11 | L | 27 | b | 43 | r | 59 | 7 | |||
12 | M | 28 | c | 44 | s | 60 | 8 | |||
13 | N | 29 | d | 45 | t | 61 | 9 | |||
14 | O | 30 | e | 46 | u | 62 | + | |||
15 | P | 31 | f | 47 | v | 63 | / |
Base64КодированиеЭлектронная почтаинтернетФайлКомпьютерКодировкаBase64Электронная почтаинтернет
FILED UNDER : IT