Base64 kódovač a dekodér: Prevod textu na/z Base64
Bezplatný online nástroj na kódovanie textu do Base64 alebo dekódovanie Base64 reťazcov späť na text. Podporuje štandardné a URL-bezpečné Base64 kódovanie s okamžitou konverziou.
Base64 Encoder/Decoder
Preveďte text na a z Base64 kódovania
Dokumentácia
Kódovač a dekodér Base64
Úvod
Base64 je schéma kódovania binárnych údajov do textu, ktoré predstavuje binárne dáta vo formáte ASCII reťazca. Je navrhnuté na prenášanie údajov uložených v binárnych formátoch cez kanály, ktoré spoľahlivo podporujú iba textový obsah. Kódovanie Base64 prevádza binárne dáta do súboru 64 znakov (odtiaľ názov), ktoré môžu byť bezpečne prenášané cez textové protokoly bez poškodenia údajov.
Znaková sada Base64 pozostáva z:
- Veľkých písmen A-Z (26 znakov)
- Malých písmen a-z (26 znakov)
- Čísel 0-9 (10 znakov)
- Dvoch ďalších znakov, typicky "+" a "/" (2 znaky)
Tento nástroj vám umožňuje jednoducho kódovať text do formátu Base64 alebo dekódovať Base64 reťazce späť do ich pôvodného textu. Je obzvlášť užitočný pre vývojárov, IT profesionálov a každého, kto pracuje s údajmi, ktoré musia byť bezpečne prenášané cez textové kanály.
Ako funguje kódovanie Base64
Proces kódovania
Kódovanie Base64 funguje tak, že prevádza každú skupinu troch bajtov (24 bitov) binárnych údajov na štyri znaky Base64. Proces nasleduje tieto kroky:
- Preveďte vstupný text na jeho binárnu reprezentáciu (používajúc ASCII alebo UTF-8 kódovanie)
- Skupinujte binárne dáta do blokov po 24 bitoch (3 bajty)
- Rozdeľte každý 24-bitový blok na štyri 6-bitové skupiny
- Preveďte každú 6-bitovú skupinu na jej zodpovedajúci znak Base64
Keď dĺžka vstupu nie je deliteľná tromi, pridáva sa padding s "=" znakmi, aby sa udržal pomer 4:3 medzi dĺžkami výstupu a vstupu.
Matematická reprezentácia
Pre sekvenciu bajtov sa zodpovedajúce znaky Base64 vypočítajú ako:
Kde predstavuje -tý znak v abecede Base64.
Proces dekódovania
Dekódovanie Base64 obracia proces kódovania:
- Preveďte každý znak Base64 na jeho 6-bitovú hodnotu
- Spojte tieto 6-bitové hodnoty
- Skupinujte bity do 8-bitových blokov (bajty)
- Preveďte každý bajt na jeho zodpovedajúci znak
Padding
Keď počet bajtov na kódovanie nie je deliteľný tromi, aplikuje sa padding:
- Ak zostáva jeden bajt, prevádza sa na dva Base64 znaky nasledované "=="
- Ak zostávajú dva bajty, prevádzajú sa na tri Base64 znaky nasledované "="
Príklad
Poďme zakódovať text "Hello" do Base64:
- ASCII reprezentácia "Hello": 72 101 108 108 111
- Binárna reprezentácia: 01001000 01100101 01101100 01101100 01101111
- Skupinovanie do 6-bitových blokov: 010010 000110 010101 101100 011011 000110 1111
- Posledný blok má iba 4 bity, takže pridáme nuly: 010010 000110 010101 101100 011011 000110 111100
- Prevádzanie na desiatkovú sústavu: 18, 6, 21, 44, 27, 6, 60
- Hľadanie v abecede Base64: S, G, V, s, b, G, 8
- Výsledok je "SGVsbG8="
Poznámka: "=" padding na konci, pretože dĺžka vstupu (5 bajtov) nie je deliteľná tromi.
Formula
Všeobecný vzorec na výpočet dĺžky Base64 zakódovaného reťazca je:
Kde predstavuje funkciu zaokrúhľovania nahor (zaokrúhľovanie na najbližšie celé číslo).
Použitie
Kódovanie Base64 sa široko používa v rôznych aplikáciách:
-
Prílohy e-mailov: MIME (Multipurpose Internet Mail Extensions) používa Base64 na kódovanie binárnych príloh v e-maile.
-
Dátové URL: Vkladanie malých obrázkov, písiem alebo iných zdrojov priamo do HTML, CSS alebo JavaScriptu pomocou schémy URL
data:
. -
Komunikácie API: Bezpečné prenášanie binárnych údajov v JSON payloadoch alebo iných textových formátoch API.
-
Ukladanie binárnych údajov v textových formátoch: Keď je potrebné uložiť binárne údaje v XML, JSON alebo iných textových formátoch.
-
Systémy autentifikácie: Základná autentifikácia v HTTP používa Base64 kódovanie (aj keď to nie je pre bezpečnosť, len pre kódovanie).
-
Kryptografia: Ako súčasť rôznych kryptografických protokolov a systémov, často na kódovanie kľúčov alebo certifikátov.
-
Hodnoty cookies: Kódovanie zložitých dátových štruktúr na uloženie v cookies.
Alternatívy
Aj keď je Base64 široko používané, existujú alternatívy, ktoré môžu byť vhodnejšie v určitých situáciách:
-
URL-safe Base64: Variant, ktorý používa "-" a "_" namiesto "+" a "/" na vyhnutie sa problémom s URL kódovaním. Užitečné pre dáta, ktoré budú zahrnuté v URL.
-
Base32: Používa 32-znakovú sadu, čo vedie k dlhšiemu výstupu, ale s lepšou čitateľnosťou pre ľudí a bez ohľadu na veľkosť písmen.
-
Hex kódovanie: Jednoduchá konverzia na hexadecimálne, ktorá je menej efektívna (zdvojnásobuje veľkosť), ale veľmi jednoduchá a široko podporovaná.
-
Binárny prenos: Pre veľké súbory alebo keď je efektívnosť kľúčová, sú preferované prenosové protokoly ako HTTP s vhodnými hlavičkami Content-Type.
-
Komprimácia + Base64: Pre veľké textové dáta môže kompresia pred kódovaním zmierniť nárast veľkosti.
-
JSON/XML serializácia: Pre štruktúrované dáta môže byť použitie natívnej JSON alebo XML serializácie vhodnejšie ako Base64 kódovanie.
História
Kódovanie Base64 má svoje korene v raných počítačových a telekomunikačných systémoch, kde bolo potrebné prenášať binárne dáta cez kanály navrhnuté pre text.
Formálna špecifikácia Base64 bola prvýkrát publikovaná v roku 1987 ako súčasť RFC 989, ktorá definovala Privacy Enhanced Mail (PEM). To bolo neskôr aktualizované v RFC 1421 (1993) a RFC 2045 (1996, ako súčasť MIME).
Termín "Base64" pochádza z toho, že kódovanie používa 64 rôznych ASCII znakov na reprezentáciu binárnych údajov. Tento výber 64 znakov bol zámerný, pretože 64 je mocninou 2 (2^6), čo robí konverziu medzi binárnymi a Base64 efektívnou.
V priebehu času sa objavilo niekoľko variantov Base64:
- Štandardné Base64: Ako je definované v RFC 4648, používa A-Z, a-z, 0-9, +, / a = na padding
- URL-safe Base64: Používa - a _ namiesto + a / na vyhnutie sa problémom s URL kódovaním
- Bezpečné názvy súborov Base64: Podobné URL-safe, navrhnuté na použitie v názvoch súborov
- Modifikované Base64 pre IMAP: Používané v protokole IMAP s inou sadou špeciálnych znakov
Napriek tomu, že má viac ako tri desaťročia, Base64 zostáva základným nástrojom v modernej informatike, najmä s nástupom webových aplikácií a API, ktoré sa silne spoliehajú na textové formáty dát ako JSON.
Kódové príklady
Tu sú príklady kódovania a dekódovania Base64 v rôznych programovacích jazykoch:
1// JavaScript Base64 Kódovanie/Dekódovanie
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("Neplatný Base64 reťazec");
11 }
12}
13
14// Príklad použitia
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Zakódované:", encoded); // SGVsbG8sIFdvcmxkIQ==
18
19try {
20 const decoded = decodeFromBase64(encoded);
21 console.log("Dekódované:", decoded); // Hello, World!
22} catch (error) {
23 console.error(error.message);
24}
25
1# Python Base64 Kódovanie/Dekódovanie
2import base64
3
4def encode_to_base64(text):
5 # Preveďte reťazec na bajty a potom zakódujte
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 # Preveďte Base64 reťazec na bajty a potom dekódujte
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"Neplatný Base64 reťazec: {e}")
18
19# Príklad použitia
20original_text = "Hello, World!"
21encoded = encode_to_base64(original_text)
22print(f"Zakódované: {encoded}") # SGVsbG8sIFdvcmxkIQ==
23
24try:
25 decoded = decode_from_base64(encoded)
26 print(f"Dekódované: {decoded}") # Hello, World!
27except ValueError as e:
28 print(e)
29
1// Java Base64 Kódovanie/Dekódovanie
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("Neplatný Base64 reťazec: " + 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("Zakódované: " + encoded); // SGVsbG8sIFdvcmxkIQ==
26
27 try {
28 String decoded = decodeFromBase64(encoded);
29 System.out.println("Dekódované: " + decoded); // Hello, World!
30 } catch (IllegalArgumentException e) {
31 System.err.println(e.getMessage());
32 }
33 }
34}
35
1<?php
2// PHP Base64 Kódovanie/Dekódovanie
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("Neplatný Base64 reťazec");
11 }
12 return $decoded;
13}
14
15// Príklad použitia
16$originalText = "Hello, World!";
17$encoded = encodeToBase64($originalText);
18echo "Zakódované: " . $encoded . "\n"; // SGVsbG8sIFdvcmxkIQ==
19
20try {
21 $decoded = decodeFromBase64($encoded);
22 echo "Dekódované: " . $decoded . "\n"; // Hello, World!
23} catch (Exception $e) {
24 echo "Chyba: " . $e->getMessage() . "\n";
25}
26?>
27
1// C# Base64 Kódovanie/Dekódovanie
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("Neplatný Base64 reťazec");
23 }
24 }
25
26 static void Main()
27 {
28 string originalText = "Hello, World!";
29 string encoded = EncodeToBase64(originalText);
30 Console.WriteLine($"Zakódované: {encoded}"); // SGVsbG8sIFdvcmxkIQ==
31
32 try
33 {
34 string decoded = DecodeFromBase64(encoded);
35 Console.WriteLine($"Dekódované: {decoded}"); // Hello, World!
36 }
37 catch (FormatException e)
38 {
39 Console.WriteLine($"Chyba: {e.Message}");
40 }
41 }
42}
43
1# Ruby Base64 Kódovanie/Dekódovanie
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 "Neplatný Base64 reťazec: #{e.message}"
13 end
14end
15
16# Príklad použitia
17original_text = "Hello, World!"
18encoded = encode_to_base64(original_text)
19puts "Zakódované: #{encoded}" # SGVsbG8sIFdvcmxkIQ==
20
21begin
22 decoded = decode_from_base64(encoded)
23 puts "Dekódované: #{decoded}" # Hello, World!
24rescue StandardError => e
25 puts "Chyba: #{e.message}"
26end
27
1// Go Base64 Kódovanie/Dekódovanie
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(base64String string) (string, error) {
14 bytes, err := base64.StdEncoding.DecodeString(base64String)
15 if err != nil {
16 return "", fmt.Errorf("neplatný Base64 reťazec: %v", err)
17 }
18 return string(bytes), nil
19}
20
21func main() {
22 originalText := "Hello, World!"
23 encoded := encodeToBase64(originalText)
24 fmt.Println("Zakódované:", encoded) // SGVsbG8sIFdvcmxkIQ==
25
26 decoded, err := decodeFromBase64(encoded)
27 if err != nil {
28 fmt.Println("Chyba:", err)
29 } else {
30 fmt.Println("Dekódované:", decoded) // Hello, World!
31 }
32}
33
1// Swift Base64 Kódovanie/Dekódovanie
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// Príklad použitia
19let originalText = "Hello, World!"
20if let encoded = encodeToBase64(originalText) {
21 print("Zakódované: \(encoded)") // SGVsbG8sIFdvcmxkIQ==
22
23 if let decoded = decodeFromBase64(encoded) {
24 print("Dekódované: \(decoded)") // Hello, World!
25 } else {
26 print("Chyba: Nepodarilo sa dekódovať Base64 reťazec")
27 }
28} else {
29 print("Chyba: Nepodarilo sa zakódovať text")
30}
31
1' Excel VBA Base64 Kódovanie/Dekódovanie
2' Poznámka: Toto vyžaduje referenciu na 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 = "Chyba: Neplatný Base64 reťazec"
39End Function
40
41' Použitie v hárku:
42' =EncodeToBase64("Hello, World!")
43' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
44
1# R Base64 Kódovanie/Dekódovanie
2# Vyžaduje balík 'base64enc'
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # Preveďte text na surové bajty, potom zakódujte
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 # Preveďte Base64 reťazec na surové, potom dekódujte
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("Neplatný Base64 reťazec:", e$message))
21 })
22}
23
24# Príklad použitia
25original_text <- "Hello, World!"
26encoded <- encode_to_base64(original_text)
27cat("Zakódované:", encoded, "\n") # SGVsbG8sIFdvcmxkIQ==
28
29tryCatch({
30 decoded <- decode_from_base64(encoded)
31 cat("Dekódované:", decoded, "\n") # Hello, World!
32}, error = function(e) {
33 cat("Chyba:", e$message, "\n")
34})
35
1% MATLAB Base64 Kódovanie/Dekódovanie
2function demo_base64()
3 originalText = 'Hello, World!';
4
5 % Kódovanie
6 encoded = encode_to_base64(originalText);
7 fprintf('Zakódované: %s\n', encoded); % SGVsbG8sIFdvcmxkIQ==
8
9 % Dekódovanie
10 try
11 decoded = decode_from_base64(encoded);
12 fprintf('Dekódované: %s\n', decoded); % Hello, World!
13 catch e
14 fprintf('Chyba: %s\n', e.message);
15 end
16end
17
18function encoded = encode_to_base64(text)
19 % Preveďte text na uint8 pole a zakódujte
20 bytes = uint8(text);
21 encoded = base64encode(bytes);
22end
23
24function decoded = decode_from_base64(base64String)
25 try
26 % Dekódujte Base64 reťazec na uint8 pole
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('Neplatný Base64 reťazec');
31 end
32end
33
1// C Base64 Kódovanie/Dekódovanie pomocou 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; // Neplatný Base64 vstup
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("Zakódované: %s\n", encoded); // SGVsbG8sIFdvcmxkIQ==
61
62 char* decoded = decode_from_base64(encoded);
63 if (decoded) {
64 printf("Dekódované: %s\n", decoded); // Hello, World!
65 free(decoded);
66 } else {
67 printf("Chyba: Neplatný Base64 reťazec\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// Rust Base64 Kódovanie/Dekódovanie
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!("Neplatná UTF-8 sekvencia: {}", e))
15 }
16 },
17 Err(e) => Err(format!("Neplatný Base64 reťazec: {}", e))
18 }
19}
20
21fn main() {
22 let original_text = "Hello, World!";
23 let encoded = encode_to_base64(original_text);
24 println!("Zakódované: {}", encoded); // SGVsbG8sIFdvcmxkIQ==
25
26 match decode_from_base64(&encoded) {
27 Ok(decoded) => println!("Dekódované: {}", decoded), // Hello, World!
28 Err(e) => println!("Chyba: {}", e)
29 }
30}
31
Okrajové prípady a úvahy
Pri práci s kódovaním a dekódovaním Base64 si dávajte pozor na tieto dôležité úvahy:
-
Unicode a ne-ASCII znaky: Pri kódovaní textu s ne-ASCII znakmi zabezpečte správne kódovanie znakov (zvyčajne UTF-8) pred kódovaním Base64.
-
Padding: Štandardné Base64 používa padding s "=" znakmi na zabezpečenie, aby dĺžka výstupu bola násobkom 4. Niektoré implementácie umožňujú vynechanie paddingu, čo môže spôsobiť problémy s kompatibilitou.
-
Riadkové zlomy: Tradičné implementácie Base64 vkladajú riadkové zlomy (typicky každých 76 znakov) pre čitateľnosť, ale moderné aplikácie často tieto vynechávajú.
-
URL-Safe Base64: Štandardné Base64 používa "+" a "/" znaky, ktoré majú špeciálne významy v URL. Pre kontexty URL používajte URL-safe Base64, ktoré tieto nahrádza "-" a "_".
-
Biele znaky: Pri dekódovaní niektoré implementácie sú zhovievavé a ignorujú biele znaky, zatiaľ čo iné vyžadujú presný vstup.
-
Zvýšenie veľkosti: Kódovanie Base64 zvyšuje veľkosť údajov približne o 33% (4 výstupné bajty pre každé 3 vstupné bajty).
-
Výkon: Kódovanie/dekódovanie Base64 môže byť výpočtovo náročné pre veľmi veľké dáta. Zvážte prístup streamovania pre veľké súbory.
Odkazy
Spätná väzba
Kliknite na toast so spätnou väzbou, aby ste začali dávať spätnú väzbu o tomto nástroji
Súvisiace nástroje
Objavte ďalšie nástroje, ktoré by mohli byť užitočné pre váš pracovný tok