Безкоштовний онлайн інструмент для кодування тексту в Base64 або декодування рядків Base64 назад у текст. Підтримує стандартне та безпечне для URL кодування Base64 з миттєвим перетворенням.
Base64 — це схема кодування бінарних даних у текстовий формат, яка представляє бінарні дані у форматі ASCII-рядка. Вона призначена для передачі даних, збережених у бінарних форматах, через канали, які надійно підтримують тільки текстовий контент. Кодування Base64 перетворює бінарні дані у набір з 64 символів (відповідно до назви), які можна безпечно передавати через текстові протоколи без пошкодження даних.
Сет символів Base64 складається з:
Цей інструмент дозволяє вам легко кодувати текст у формат Base64 або декодувати рядки Base64 назад у їх оригінальний текст. Це особливо корисно для розробників, ІТ-фахівців та всіх, хто працює з даними, які потрібно передавати безпечно через текстові канали. Завдяки нашій функції реального часу, ви можете миттєво бачити результати під час введення, що робить ваш робочий процес кодування та декодування більш ефективним.
Кодування Base64 працює, перетворюючи кожну групу з трьох байтів (24 біти) бінарних даних на чотири символи Base64. Процес відбувається за такими етапами:
Коли довжина вхідних даних не ділиться на 3, додається заповнювання символами "=" для підтримки співвідношення 4:3 між довжиною виходу та входу.
Для послідовності байтів , відповідні символи Base64 обчислюються як:
Де представляє -й символ у алфавіті Base64.
Декодування Base64 скасовує процес кодування:
Коли кількість байтів для кодування не ділиться на 3, застосовується заповнювання:
Давайте закодуємо текст "Hello" у Base64:
Зверніть увагу на заповнювання "=" в кінці, оскільки довжина вхідних даних (5 байтів) не ділиться на 3.
Загальна формула для обчислення довжини рядка, закодованого у Base64:
Де представляє функцію округлення вгору (округлення до найближчого цілого).
Наш інструмент Base64 надає простий і ефективний спосіб кодувати текст у Base64 або декодувати Base64 назад у текст. Ось як його використовувати:
Наш інструмент тепер включає опцію живого перетворення, яка оновлює вихідні дані, поки ви вводите:
Функція живого перетворення особливо корисна, коли:
Для дуже великих вхідних даних інструмент використовує дебаунсинг для підтримки продуктивності, гарантуючи, що перетворення відбувається лише після того, як ви ненадовго призупините введення, а не на кожному натисканні клавіші.
Кодування Base64 широко використовується в різних додатках:
Email вкладення: MIME (Розширення багатопрофільної електронної пошти) використовує Base64 для кодування бінарних вкладень в електронній пошті.
URL-дані: Вбудовування невеликих зображень, шрифтів або інших ресурсів безпосередньо в HTML, CSS або JavaScript за допомогою схеми URL data:
.
API-комунікації: Безпечно передавати бінарні дані у JSON-вантажах або інших текстових форматах API.
Зберігання бінарних даних у текстових форматах: Коли бінарні дані потрібно зберігати в XML, JSON або інших текстових форматах.
Системи аутентифікації: Базова аутентифікація в HTTP використовує кодування Base64 (хоча це не для безпеки, а просто для кодування).
Криптографія: Як частина різних криптографічних протоколів і систем, часто для кодування ключів або сертифікатів.
Значення cookie: Кодування складних структур даних для зберігання в cookie.
Хоча Base64 широко використовується, є альтернативи, які можуть бути більш доречними в певних ситуаціях:
Безпечний для URL Base64: Варіант, що використовує "-" та "_" замість "+" та "/", щоб уникнути проблем з кодуванням URL. Корисно для даних, які будуть включені в URL.
Base32: Використовує набір з 32 символів, що призводить до більшої виходу, але з кращою читабельністю для людей та нечутливістю до регістру.
Шістнадцяткове кодування: Просте перетворення у шістнадцятковий формат, яке є менш ефективним (подвоює розмір), але дуже просте та широко підтримується.
Бінарна передача: Для великих файлів або коли важлива ефективність, прямі бінарні протоколи передачі, такі як HTTP з відповідними заголовками Content-Type, є переважними.
Стиснення + Base64: Для великих текстових даних стиснення перед кодуванням може зменшити збільшення розміру.
Серіалізація JSON/XML: Для структурованих даних використання рідної серіалізації JSON або XML може бути більш доречним, ніж кодування Base64.
Кодування Base64 має свої корені в ранніх обчислювальних та телекомунікаційних системах, де бінарні дані потрібно було передавати через канали, розроблені для тексту.
Офіційна специфікація Base64 була вперше опублікована в 1987 році в RFC 989, який визначав приватну розширену пошту (PEM). Це було пізніше оновлено в RFC 1421 (1993) та RFC 2045 (1996, як частина MIME).
Термін "Base64" походить від того, що кодування використовує 64 різні ASCII символи для представлення бінарних даних. Цей вибір 64 символів був навмисним, оскільки 64 є степенем двійки (2^6), що робить перетворення між бінарними даними та Base64 ефективним.
З часом виникло кілька варіантів Base64:
Незважаючи на те, що йому більше тридцяти років, Base64 залишається основним інструментом у сучасних обчисленнях, особливо з ростом веб-додатків та API, які сильно покладаються на текстові формати даних, такі як JSON.
Ось приклади кодування та декодування Base64 на різних мовах програмування:
1// JavaScript Base64 Кодування/Декодування
2function encodeToBase64(text) {
3 return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7 try {
8 return atob(base64String);
9 } catch (e) {
10 throw new Error("Недійсний рядок Base64");
11 }
12}
13
14// Приклад використання
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Закодовано:", encoded); // SGVsbG8sIFdvcmxkIQ==
18
19try {
20 const decoded = decodeFromBase64(encoded);
21 console.log("Декодовано:", decoded); // Hello, World!
22} catch (error) {
23 console.error(error.message);
24}
25
1# Python Base64 Кодування/Декодування
2import base64
3
4def encode_to_base64(text):
5 # Перетворити рядок у байти, а потім закодувати
6 text_bytes = text.encode('utf-8')
7 base64_bytes = base64.b64encode(text_bytes)
8 return base64_bytes.decode('utf-8')
9
10def decode_from_base64(base64_string):
11 try:
12 # Перетворити рядок base64 у байти, а потім декодувати
13 base64_bytes = base64_string.encode('utf-8')
14 text_bytes = base64.b64decode(base64_bytes)
15 return text_bytes.decode('utf-8')
16 except Exception as e:
17 raise ValueError(f"Недійсний рядок Base64: {e}")
18
19# Приклад використання
20original_text = "Hello, World!"
21encoded = encode_to_base64(original_text)
22print(f"Закодовано: {encoded}") # SGVsbG8sIFdvcmxkIQ==
23
24try:
25 decoded = decode_from_base64(encoded)
26 print(f"Декодовано: {decoded}") # Hello, World!
27except ValueError as e:
28 print(e)
29
1// Java Base64 Кодування/Декодування
2import java.util.Base64;
3import java.nio.charset.StandardCharsets;
4
5public class Base64Example {
6 public static String encodeToBase64(String text) {
7 byte[] textBytes = text.getBytes(StandardCharsets.UTF_8);
8 byte[] encodedBytes = Base64.getEncoder().encode(textBytes);
9 return new String(encodedBytes, StandardCharsets.UTF_8);
10 }
11
12 public static String decodeFromBase64(String base64String) {
13 try {
14 byte[] base64Bytes = base64String.getBytes(StandardCharsets.UTF_8);
15 byte[] decodedBytes = Base64.getDecoder().decode(base64Bytes);
16 return new String(decodedBytes, StandardCharsets.UTF_8);
17 } catch (IllegalArgumentException e) {
18 throw new IllegalArgumentException("Недійсний рядок Base64: " + e.getMessage());
19 }
20 }
21
22 public static void main(String[] args) {
23 String originalText = "Hello, World!";
24 String encoded = encodeToBase64(originalText);
25 System.out.println("Закодовано: " + encoded); // SGVsbG8sIFdvcmxkIQ==
26
27 try {
28 String decoded = decodeFromBase64(encoded);
29 System.out.println("Декодовано: " + decoded); // Hello, World!
30 } catch (IllegalArgumentException e) {
31 System.err.println(e.getMessage());
32 }
33 }
34}
35
1<?php
2// PHP Base64 Кодування/Декодування
3function encodeToBase64($text) {
4 return base64_encode($text);
5}
6
7function decodeFromBase64($base64String) {
8 $decoded = base64_decode($base64String, true);
9 if ($decoded === false) {
10 throw new Exception("Недійсний рядок Base64");
11 }
12 return $decoded;
13}
14
15// Приклад використання
16$originalText = "Hello, World!";
17$encoded = encodeToBase64($originalText);
18echo "Закодовано: " . $encoded . "\n"; // SGVsbG8sIFdvcmxkIQ==
19
20try {
21 $decoded = decodeFromBase64($encoded);
22 echo "Декодовано: " . $decoded . "\n"; // Hello, World!
23} catch (Exception $e) {
24 echo "Помилка: " . $e->getMessage() . "\n";
25}
26?>
27
1// C# Base64 Кодування/Декодування
2using System;
3using System.Text;
4
5class Base64Example
6{
7 public static string EncodeToBase64(string text)
8 {
9 byte[] textBytes = Encoding.UTF8.GetBytes(text);
10 return Convert.ToBase64String(textBytes);
11 }
12
13 public static string DecodeFromBase64(string base64String)
14 {
15 try
16 {
17 byte[] base64Bytes = Convert.FromBase64String(base64String);
18 return Encoding.UTF8.GetString(base64Bytes);
19 }
20 catch (FormatException)
21 {
22 throw new FormatException("Недійсний рядок Base64");
23 }
24 }
25
26 static void Main()
27 {
28 string originalText = "Hello, World!";
29 string encoded = EncodeToBase64(originalText);
30 Console.WriteLine($"Закодовано: {encoded}"); // SGVsbG8sIFdvcmxkIQ==
31
32 try
33 {
34 string decoded = DecodeFromBase64(encoded);
35 Console.WriteLine($"Декодовано: {decoded}"); // Hello, World!
36 }
37 catch (FormatException e)
38 {
39 Console.WriteLine($"Помилка: {e.Message}");
40 }
41 }
42}
43
1# Ruby Base64 Кодування/Декодування
2require 'base64'
3
4def encode_to_base64(text)
5 Base64.strict_encode64(text)
6end
7
8def decode_from_base64(base64_string)
9 begin
10 Base64.strict_decode64(base64_string)
11 rescue ArgumentError => e
12 raise "Недійсний рядок Base64: #{e.message}"
13 end
14end
15
16# Приклад використання
17original_text = "Hello, World!"
18encoded = encode_to_base64(original_text)
19puts "Закодовано: #{encoded}" # SGVsbG8sIFdvcmxkIQ==
20
21begin
22 decoded = decode_from_base64(encoded)
23 puts "Декодовано: #{decoded}" # Hello, World!
24rescue StandardError => e
25 puts "Помилка: #{e.message}"
26end
27
1// Go Base64 Кодування/Декодування
2package main
3
4import (
5 "encoding/base64"
6 "fmt"
7)
8
9func encodeToBase64(text string) string {
10 return base64.StdEncoding.EncodeToString([]byte(text))
11}
12
13func decodeFromBase64(base64_string string) (string, error) {
14 bytes, err := base64.StdEncoding.DecodeString(base64_string)
15 if err != nil {
16 return "", fmt.Errorf("недійсний рядок Base64: %v", err)
17 }
18 return string(bytes), nil
19}
20
21func main() {
22 originalText := "Hello, World!"
23 encoded := encodeToBase64(originalText)
24 fmt.Println("Закодовано:", encoded) // SGVsbG8sIFdvcmxkIQ==
25
26 decoded, err := decodeFromBase64(encoded)
27 if err != nil {
28 fmt.Println("Помилка:", err)
29 } else {
30 fmt.Println("Декодовано:", decoded) // Hello, World!
31 }
32}
33
1// Swift Base64 Кодування/Декодування
2import Foundation
3
4func encodeToBase64(_ text: String) -> String? {
5 if let data = text.data(using: .utf8) {
6 return data.base64EncodedString()
7 }
8 return nil
9}
10
11func decodeFromBase64(_ base64String: String) -> String? {
12 if let data = Data(base64Encoded: base64String) {
13 return String(data: data, encoding: .utf8)
14 }
15 return nil
16}
17
18// Приклад використання
19let originalText = "Hello, World!"
20if let encoded = encodeToBase64(originalText) {
21 print("Закодовано: \(encoded)") // SGVsbG8sIFdvcmxkIQ==
22
23 if let decoded = decodeFromBase64(encoded) {
24 print("Декодовано: \(decoded)") // Hello, World!
25 } else {
26 print("Помилка: Не вдалося декодувати рядок Base64")
27 }
28} else {
29 print("Помилка: Не вдалося закодувати текст")
30}
31
1' Excel VBA Кодування/Декодування Base64
2' Примітка: Це вимагає посилання на Microsoft XML, v6.0
3Function EncodeToBase64(text As String) As String
4 Dim xmlObj As Object
5 Set xmlObj = CreateObject("MSXML2.DOMDocument")
6
7 Dim xmlNode As Object
8 Set xmlNode = xmlObj.createElement("b64")
9
10 xmlNode.DataType = "bin.base64"
11 xmlNode.nodeTypedValue = StrConv(text, vbFromUnicode)
12
13 EncodeToBase64 = xmlNode.text
14
15 Set xmlNode = Nothing
16 Set xmlObj = Nothing
17End Function
18
19Function DecodeFromBase64(base64String As String) As String
20 On Error GoTo ErrorHandler
21
22 Dim xmlObj As Object
23 Set xmlObj = CreateObject("MSXML2.DOMDocument")
24
25 Dim xmlNode As Object
26 Set xmlNode = xmlObj.createElement("b64")
27
28 xmlNode.DataType = "bin.base64"
29 xmlNode.text = base64String
30
31 DecodeFromBase64 = StrConv(xmlNode.nodeTypedValue, vbUnicode)
32
33 Set xmlNode = Nothing
34 Set xmlObj = Nothing
35 Exit Function
36
37ErrorHandler:
38 DecodeFromBase64 = "Помилка: Недійсний рядок Base64"
39End Function
40
41' Використання в аркуші:
42' =EncodeToBase64("Hello, World!")
43' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
44
1# R Base64 Кодування/Декодування
2# Вимагає пакет 'base64enc'
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # Перетворити текст у сирі байти, а потім закодувати
8 text_raw <- charToRaw(text)
9 base64_encoded <- base64encode(text_raw)
10 return(rawToChar(base64_encoded))
11}
12
13decode_from_base64 <- function(base64_string) {
14 tryCatch({
15 # Перетворити рядок base64 у сирі байти, а потім декодувати
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("Недійсний рядок Base64:", e$message))
21 })
22}
23
24# Приклад використання
25original_text <- "Hello, World!"
26encoded <- encode_to_base64(original_text)
27cat("Закодовано:", encoded, "\n") # SGVsbG8sIFdvcmxkIQ==
28
29tryCatch({
30 decoded <- decode_from_base64(encoded)
31 cat("Декодовано:", decoded, "\n") # Hello, World!
32}, error = function(e) {
33 cat("Помилка:", e$message, "\n")
34})
35
1% MATLAB Кодування/Декодування Base64
2function demo_base64()
3 originalText = 'Hello, World!';
4
5 % Кодування
6 encoded = encode_to_base64(originalText);
7 fprintf('Закодовано: %s\n', encoded); % SGVsbG8sIFdvcmxkIQ==
8
9 % Декодування
10 try
11 decoded = decode_from_base64(encoded);
12 fprintf('Декодовано: %s\n', decoded); % Hello, World!
13 catch e
14 fprintf('Помилка: %s\n', e.message);
15 end
16end
17
18function encoded = encode_to_base64(text)
19 % Перетворити текст у масив uint8 і закодувати
20 bytes = uint8(text);
21 encoded = base64encode(bytes);
22end
23
24function decoded = decode_from_base64(base64String)
25 try
26 % Декодувати рядок base64 у масив uint8
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('Недійсний рядок Base64');
31 end
32end
33
1// C Кодування/Декодування Base64 за допомогою OpenSSL
2#include <stdio.h>
3#include <string.h>
4#include <openssl/bio.h>
5#include <openssl/evp.h>
6#include <openssl/buffer.h>
7#include <stdint.h>
8
9char* encode_to_base64(const char* input) {
10 BIO *bio, *b64;
11 BUF_MEM *bufferPtr;
12
13 b64 = BIO_new(BIO_f_base64());
14 bio = BIO_new(BIO_s_mem());
15 bio = BIO_push(b64, bio);
16
17 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
18 BIO_write(bio, input, strlen(input));
19 BIO_flush(bio);
20 BIO_get_mem_ptr(bio, &bufferPtr);
21
22 char* result = (char*)malloc(bufferPtr->length + 1);
23 memcpy(result, bufferPtr->data, bufferPtr->length);
24 result[bufferPtr->length] = '\0';
25
26 BIO_free_all(bio);
27
28 return result;
29}
30
31char* decode_from_base64(const char* input) {
32 BIO *bio, *b64;
33 size_t length = strlen(input);
34 char* buffer = (char*)malloc(length);
35
36 b64 = BIO_new(BIO_f_base64());
37 bio = BIO_new_mem_buf(input, -1);
38 bio = BIO_push(b64, bio);
39
40 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
41 int decoded_length = BIO_read(bio, buffer, length);
42
43 if (decoded_length <= 0) {
44 free(buffer);
45 BIO_free_all(bio);
46 return NULL; // Недійсний вхід Base64
47 }
48
49 buffer[decoded_length] = '\0';
50
51 BIO_free_all(bio);
52
53 return buffer;
54}
55
56int main() {
57 const char* original_text = "Hello, World!";
58
59 char* encoded = encode_to_base64(original_text);
60 printf("Закодовано: %s\n", encoded); // SGVsbG8sIFdvcmxkIQ==
61
62 char* decoded = decode_from_base64(encoded);
63 if (decoded) {
64 printf("Декодовано: %s\n", decoded); // Hello, World!
65 free(decoded);
66 } else {
67 printf("Помилка: Недійсний рядок Base64\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// Rust Кодування/Декодування Base64
2use base64::{encode, decode};
3use std::str;
4
5fn encode_to_base64(text: &str) -> String {
6 encode(text)
7}
8
9fn decode_from_base64(base64_string: &str) -> Result<String, String> {
10 match decode(base64_string) {
11 Ok(bytes) => {
12 match str::from_utf8(&bytes) {
13 Ok(text) => Ok(text.to_string()),
14 Err(e) => Err(format!("Недійсна UTF-8 послідовність: {}", e))
15 }
16 },
17 Err(e) => Err(format!("Недійсний рядок Base64: {}", e))
18 }
19}
20
21fn main() {
22 let original_text = "Hello, World!";
23 let encoded = encode_to_base64(original_text);
24 println!("Закодовано: {}", encoded); // SGVsbG8sIFdvcmxkIQ==
25
26 match decode_from_base64(&encoded) {
27 Ok(decoded) => println!("Декодовано: {}", decoded), // Hello, World!
28 Err(e) => println!("Помилка: {}", e)
29 }
30}
31
Ось приклад того, як ви можете реалізувати функцію живого перетворення в JavaScript:
1// JavaScript реалізація з живим перетворенням
2const textInput = document.getElementById('text-input');
3const base64Output = document.getElementById('base64-output');
4const liveConversionCheckbox = document.getElementById('live-conversion');
5let debounceTimeout = null;
6
7// Функція для кодування з дебаунсингом для продуктивності
8function liveEncode() {
9 // Очистити будь-які існуючі тайм-аути
10 if (debounceTimeout) {
11 clearTimeout(debounceTimeout);
12 }
13
14 // Встановити новий тайм-аут, щоб запобігти надмірній обробці під час швидкого введення
15 debounceTimeout = setTimeout(() => {
16 try {
17 const text = textInput.value;
18 if (text.trim()) {
19 base64Output.value = btoa(text);
20 } else {
21 base64Output.value = '';
22 }
23 } catch (e) {
24 console.error('Помилка кодування:', e);
25 // Обробити помилку відповідно в інтерфейсі
26 }
27 }, 300); // 300мс затримка дебаунсингу
28}
29
30// Обробники подій
31liveConversionCheckbox.addEventListener('change', function() {
32 if (this.checked) {
33 // Увімкнути живе перетворення
34 textInput.addEventListener('input', liveEncode);
35 // Початкове кодування
36 liveEncode();
37 } else {
38 // Вимкнути живе перетворення
39 textInput.removeEventListener('input', liveEncode);
40 }
41});
42
При роботі з кодуванням та декодуванням Base64 звертайте увагу на ці важливі міркування:
Юнікод та не-ASCII символи: При кодуванні тексту з не-ASCII символами забезпечте правильне кодування символів (зазвичай UTF-8) перед кодуванням Base64.
Заповнювання: Стандартний Base64 використовує заповнювання символами "=" для забезпечення того, щоб довжина виходу була кратною 4. Деякі реалізації дозволяють пропускати заповнювання, що може спричинити проблеми з сумісністю.
Переноси рядків: Традиційні реалізації Base64 вставляють перенос рядка (зазвичай кожні 76 символів) для читабельності, але сучасні додатки часто пропускають їх.
Безпечний для URL Base64: Стандартний Base64 використовує символи "+" та "/", які мають спеціальне значення в URL. Для контекстів URL використовуйте безпечний для URL Base64, який замінює їх на "-" та "_".
Пробіли: При декодуванні деякі реалізації є поблажливими і ігнорують пробіли, тоді як інші вимагають точного введення.
Збільшення розміру: Кодування Base64 збільшує розмір даних приблизно на 33% (4 байти виходу на кожні 3 байти входу).
Продуктивність: Кодування/декодування Base64 може бути обчислювально інтенсивним для дуже великих даних. Наш інструмент використовує дебаунсинг для підтримки чутливості навіть з великими вхідними даними.
Розгляди живого перетворення: Коли ви використовуєте функцію живого перетворення з дуже великими вхідними даними, ви можете помітити невелику затримку, оскільки інструмент обробляє дані. Це нормально і допомагає підтримувати продуктивність браузера.
Функція живого перетворення автоматично оновлює вихідні дані, поки ви вводите, без необхідності натискати кнопку кодування або декодування. Це забезпечує миттєвий зворотний зв'язок і робить інструмент більш інтерактивним та ефективним у використанні.
Наша реалізація використовує дебаунсинг, щоб забезпечити хорошу продуктивність навіть з великими вхідними даними. Перетворення відбувається лише після того, як ви ненадовго призупините введення, а не на кожному натисканні клавіші, що запобігає надмірній обробці під час швидкого введення.
Живе перетворення ідеально підходить для інтерактивної роботи, коли ви хочете миттєвий зворотний зв'язок. Для дуже великих наборів даних або коли ви хочете переглянути свій вхід перед перетворенням, ви можете віддати перевагу ручному варіанту перетворення.
Так, функція живого перетворення працює в обох напрямках - від тексту до Base64 та від Base64 до тексту.
Якщо ви введете недійсні символи Base64 під час декодування з увімкненим живим перетворенням, інструмент відобразить повідомлення про помилку в реальному часі, що допоможе вам виявити та виправити проблему негайно.
Спробуйте наш інструмент кодувальника/декодувальника Base64 сьогодні, щоб швидко перетворити між текстом та форматами Base64 з зручністю реального часу. Чи ви розробник, який працює з API, обробляєте вкладення електронної пошти чи вбудовуєте бінарні дані в текстові формати, наш інструмент робить процес простим та ефективним.
Відкрийте більше інструментів, які можуть бути корисними для вашого робочого процесу