Whiz Tools

Base64-kooderi/Purku

Muuta teksti Base64-koodaukseen ja takaisin

Kopioi

Base64-kooderi ja -dekooderi

Johdanto

Base64 on binaarista tekstiin koodausjärjestelmä, joka esittää binaaridataa ASCII-merkkijonomuodossa. Se on suunniteltu kuljettamaan binaarimuodossa tallennettua dataa kanavilla, jotka tukevat luotettavasti vain tekstisisältöä. Base64-koodaus muuntaa binaaridatan 64 merkin joukkoon (siksi nimi), jota voidaan turvallisesti siirtää tekstipohjaisilla protokollilla ilman datan korruptiota.

Base64-merkkijoukko koostuu:

  • Suurista kirjaimista A-Z (26 merkkiä)
  • Pienistä kirjaimista a-z (26 merkkiä)
  • Numeroista 0-9 (10 merkkiä)
  • Kahdesta lisämerkistä, tyypillisesti "+" ja "/" (2 merkkiä)

Tämä työkalu mahdollistaa tekstin helpon koodauksen Base64-muotoon tai Base64-merkkijonojen dekoodauksen takaisin alkuperäiseen tekstiinsä. Se on erityisen hyödyllinen kehittäjille, IT-ammattilaisille ja kaikille, jotka työskentelevät datan kanssa, joka on lähetettävä turvallisesti tekstipohjaisilla kanavilla.

Kuinka Base64-koodaus toimii

Koodausprosessi

Base64-koodaus toimii muuntamalla jokaisen kolmen tavun (24 bittiä) binaaridatan neljäksi Base64-merkkijonoksi. Prosessi etenee seuraavasti:

  1. Muunna syöte teksti sen binaariedustukseen (käyttäen ASCII- tai UTF-8-koodausta)
  2. Ryhmittele binaaridata 24 bittiä (3 tavua) sisältäviksi lohkoiksi
  3. Jaa jokainen 24-bittinen lohko neljään 6-bittiseen ryhmään
  4. Muunna jokainen 6-bittinen ryhmä vastaavaksi Base64-merkkijonoksi

Kun syötteen pituus ei ole jaollinen kolmella, täyte "=" -merkkejä lisätään 4:3-suhteen ylläpitämiseksi tulosten ja syötteen pituuksien välillä.

Matemaattinen esitys

Tavujonolle b1,b2,b3b_1, b_2, b_3 vastaavat Base64-merkit c1,c2,c3,c4c_1, c_2, c_3, c_4 lasketaan seuraavasti:

c1=Base64[(b1>>2)]c_1 = \text{Base64}[(b_1 >> 2)]
c2=Base64[((b1&3)<<4)(b2>>4)]c_2 = \text{Base64}[((b_1 \& 3) << 4) | (b_2 >> 4)]
c3=Base64[((b2&15)<<2)(b3>>6)]c_3 = \text{Base64}[((b_2 \& 15) << 2) | (b_3 >> 6)]
c4=Base64[(b3&63)]c_4 = \text{Base64}[(b_3 \& 63)]

Missä Base64[i]\text{Base64}[i] edustaa ii:ttä merkkiä Base64-aakkostossa.

Dekoodausprosessi

Base64-dekoodaus kääntää koodausprosessin:

  1. Muunna jokainen Base64-merkki sen 6-bittiseksi arvoksi
  2. Yhdistä nämä 6-bittiset arvot
  3. Ryhmittele bitit 8-bittisiksi lohkoiksi (tavuiksi)
  4. Muunna jokainen tavu vastaavaksi merkiksi

Täyte

Kun koodattavien tavujen määrä ei ole jaollinen kolmella, täytettä käytetään:

  • Jos jäljellä on yksi tavu, se muunnetaan kahdeksi Base64-merkkijonoksi, joiden jälkeen tulee "=="
  • Jos jäljellä on kaksi tavua, ne muunnetaan kolmeksi Base64-merkkijonoksi, joiden jälkeen tulee "="

Esimerkki

Koodataan teksti "Hello" Base64:een:

  1. "Hello":n ASCII-edustus: 72 101 108 108 111
  2. Binaariedustus: 01001000 01100101 01101100 01101100 01101111
  3. Ryhmittely 6-bittisiin lohkoihin: 010010 000110 010101 101100 011011 000110 1111
  4. Viimeinen lohko sisältää vain 4 bittiä, joten täytämme nollilla: 010010 000110 010101 101100 011011 000110 111100
  5. Muuntaminen desimaaliksi: 18, 6, 21, 44, 27, 6, 60
  6. Etsiminen Base64-aakkostosta: S, G, V, s, b, G, 8
  7. Tulos on "SGVsbG8="

Huomaa "=" -täyte lopussa, koska syötteen pituus (5 tavua) ei ole jaollinen kolmella.

Kaava

Base64-koodatun merkkijonon pituuden laskemisen yleinen kaava on:

encoded_length=4×input_length3\text{encoded\_length} = 4 \times \lceil \frac{\text{input\_length}}{3} \rceil

Missä x\lceil x \rceil edustaa kattofunktiota (pyöristämistä ylöspäin lähimpään kokonaislukuun).

Käyttötapaukset

Base64-koodaus on laajasti käytössä erilaisissa sovelluksissa:

  1. Sähköpostiliitteet: MIME (monipuolinen internet-sähköpostin laajennus) käyttää Base64:ää binaaristen liitteiden koodamiseen sähköpostissa.

  2. Data-URL:t: Pienien kuvien, fonttien tai muiden resurssien upottaminen suoraan HTML:ään, CSS:ään tai JavaScriptiin data: URL -kaavalla.

  3. API-viestintä: Binaaridatan turvallinen siirtäminen JSON-kuormissa tai muissa tekstipohjaisissa API-muodoissa.

  4. Binaaridatan tallentaminen tekstimuodoissa: Kun binaaridata on tallennettava XML:ään, JSON:iin tai muihin tekstipohjaisiin muotoihin.

  5. Todennusjärjestelmät: HTTP:n perusautentikointi käyttää Base64-koodausta (vaikka se ei ole turvallista, vain koodauksen vuoksi).

  6. Salaus: Osana erilaisia salausprotokollia ja -järjestelmiä, usein avainten tai sertifikaattien koodauksessa.

  7. Evästeiden arvot: Monimutkaisten tietorakenteiden koodaus evästeisiin tallennettavaksi.

Vaihtoehdot

Vaikka Base64 on laajalti käytössä, on olemassa vaihtoehtoja, jotka voivat olla sopivampia tietyissä tilanteissa:

  1. URL-turvallinen Base64: Muunnos, joka käyttää "-" ja "_" "+" ja "/" sijaan, jotta vältetään URL-koodausongelmat. Hyödyllinen datalle, joka sisällytetään URL-osoitteisiin.

  2. Base32: Käyttää 32-merkkistä joukkoa, mikä johtaa pidempään tulokseen, mutta parempaan ihmislukemiseen ja kirjainherkkyyteen.

  3. Hex-koodaus: Yksinkertainen muunnos heksadesimaaliin, joka on vähemmän tehokasta (kaksinkertaistaa koon), mutta hyvin yksinkertaista ja laajasti tuettua.

  4. Binaarisiirto: Suurille tiedostoille tai kun tehokkuus on kriittistä, suorat binaarisiirtoprotokollat, kuten HTTP, asianmukaisilla Content-Type-otsikoilla, ovat suositeltavampia.

  5. Pakkaus + Base64: Suurille tekstidatoille pakkaaminen ennen koodausta voi vähentää koon kasvua.

  6. JSON/XML-serialisointi: Rakenne-datalle alkuperäisen JSON- tai XML-serialisoinnin käyttäminen voi olla sopivampaa kuin Base64-koodaus.

Historia

Base64-koodaus juontaa juurensa varhaiseen tietojenkäsittelyyn ja telekommunikaatiojärjestelmiin, joissa binaaridataa oli lähetettävä kanavilla, jotka oli suunniteltu tekstille.

Base64:n virallinen spesifikaatio julkaistiin ensimmäisen kerran vuonna 1987 osana RFC 989, joka määritteli yksityisen parannetun postin (PEM). Tämä päivitettiin myöhemmin RFC 1421:ssä (1993) ja RFC 2045:ssä (1996, osana MIMEa).

Termi "Base64" tulee siitä, että koodaus käyttää 64 eri ASCII-merkkiä binaaridatan esittämiseen. Tämä 64 merkin valinta oli tarkoituksellista, koska 64 on kahden potenssi (2^6), mikä tekee muunnoksesta binaarista Base64:een tehokasta.

Ajan myötä useita Base64-muunnoksia on syntynyt:

  • Standardi Base64: Kuten RFC 4648 määrittelee, käyttäen A-Z, a-z, 0-9, +, / ja = täytteenä
  • URL-turvallinen Base64: Käyttää - ja _ "+" ja / sijaan, jotta vältetään URL-koodausongelmat
  • Tiedostonimi-turvallinen Base64: Samankaltainen kuin URL-turvallinen, suunniteltu käytettäväksi tiedostonimissä
  • Muokattu Base64 IMAP:lle: Käytetään IMAP-protokollassa eri erikoismerkkijoukolla

Huolimatta siitä, että se on yli kolmekymmentä vuotta vanha, Base64 pysyy perustyökaluna nykyaikaisessa tietojenkäsittelyssä, erityisesti verkkosovellusten ja API:en myötä, jotka nojaavat voimakkaasti tekstipohjaisiin tietomuotoihin, kuten JSON.

Koodiesimerkit

Tässä on esimerkkejä Base64-koodauksesta ja -dekoodauksesta eri ohjelmointikielillä:

// JavaScript Base64-koodaus/dekoodaus
function encodeToBase64(text) {
  return btoa(text);
}

function decodeFromBase64(base64String) {
  try {
    return atob(base64String);
  } catch (e) {
    throw new Error("Virheellinen Base64-merkkijono");
  }
}

// Esimerkin käyttö
const originalText = "Hello, World!";
const encoded = encodeToBase64(originalText);
console.log("Koodattu:", encoded);  // SGVsbG8sIFdvcmxkIQ==

try {
  const decoded = decodeFromBase64(encoded);
  console.log("Dekoodattu:", decoded);  // Hello, World!
} catch (error) {
  console.error(error.message);
}
# Python Base64-koodaus/dekoodaus
import base64

def encode_to_base64(text):
    # Muunna merkkijono tavuiksi ja sitten koodaa
    text_bytes = text.encode('utf-8')
    base64_bytes = base64.b64encode(text_bytes)
    return base64_bytes.decode('utf-8')

def decode_from_base64(base64_string):
    try:
        # Muunna base64-merkkijono tavuiksi ja sitten dekoodaa
        base64_bytes = base64_string.encode('utf-8')
        text_bytes = base64.b64decode(base64_bytes)
        return text_bytes.decode('utf-8')
    except Exception as e:
        raise ValueError(f"Virheellinen Base64-merkkijono: {e}")

# Esimerkin käyttö
original_text = "Hello, World!"
encoded = encode_to_base64(original_text)
print(f"Koodattu: {encoded}")  # SGVsbG8sIFdvcmxkIQ==

try:
    decoded = decode_from_base64(encoded)
    print(f"Dekoodattu: {decoded}")  # Hello, World!
except ValueError as e:
    print(e)
// Java Base64-koodaus/dekoodaus
import java.util.Base64;
import java.nio.charset.StandardCharsets;

public class Base64Example {
    public static String encodeToBase64(String text) {
        byte[] textBytes = text.getBytes(StandardCharsets.UTF_8);
        byte[] encodedBytes = Base64.getEncoder().encode(textBytes);
        return new String(encodedBytes, StandardCharsets.UTF_8);
    }
    
    public static String decodeFromBase64(String base64String) {
        try {
            byte[] base64Bytes = base64String.getBytes(StandardCharsets.UTF_8);
            byte[] decodedBytes = Base64.getDecoder().decode(base64Bytes);
            return new String(decodedBytes, StandardCharsets.UTF_8);
        } catch (IllegalArgumentException e) {
            throw new IllegalArgumentException("Virheellinen Base64-merkkijono: " + e.getMessage());
        }
    }
    
    public static void main(String[] args) {
        String originalText = "Hello, World!";
        String encoded = encodeToBase64(originalText);
        System.out.println("Koodattu: " + encoded);  // SGVsbG8sIFdvcmxkIQ==
        
        try {
            String decoded = decodeFromBase64(encoded);
            System.out.println("Dekoodattu: " + decoded);  // Hello, World!
        } catch (IllegalArgumentException e) {
            System.err.println(e.getMessage());
        }
    }
}
<?php
// PHP Base64-koodaus/dekoodaus
function encodeToBase64($text) {
    return base64_encode($text);
}

function decodeFromBase64($base64String) {
    $decoded = base64_decode($base64String, true);
    if ($decoded === false) {
        throw new Exception("Virheellinen Base64-merkkijono");
    }
    return $decoded;
}

// Esimerkin käyttö
$originalText = "Hello, World!";
$encoded = encodeToBase64($originalText);
echo "Koodattu: " . $encoded . "\n";  // SGVsbG8sIFdvcmxkIQ==

try {
    $decoded = decodeFromBase64($encoded);
    echo "Dekoodattu: " . $decoded . "\n";  // Hello, World!
} catch (Exception $e) {
    echo "Virhe: " . $e->getMessage() . "\n";
}
?>
// C# Base64-koodaus/dekoodaus
using System;
using System.Text;

class Base64Example
{
    public static string EncodeToBase64(string text)
    {
        byte[] textBytes = Encoding.UTF8.GetBytes(text);
        return Convert.ToBase64String(textBytes);
    }
    
    public static string DecodeFromBase64(string base64String)
    {
        try
        {
            byte[] base64Bytes = Convert.FromBase64String(base64String);
            return Encoding.UTF8.GetString(base64Bytes);
        }
        catch (FormatException)
        {
            throw new FormatException("Virheellinen Base64-merkkijono");
        }
    }
    
    static void Main()
    {
        string originalText = "Hello, World!";
        string encoded = EncodeToBase64(originalText);
        Console.WriteLine($"Koodattu: {encoded}");  // SGVsbG8sIFdvcmxkIQ==
        
        try
        {
            string decoded = DecodeFromBase64(encoded);
            Console.WriteLine($"Dekoodattu: {decoded}");  // Hello, World!
        }
        catch (FormatException e)
        {
            Console.WriteLine($"Virhe: {e.Message}");
        }
    }
}
# Ruby Base64-koodaus/dekoodaus
require 'base64'

def encode_to_base64(text)
  Base64.strict_encode64(text)
end

def decode_from_base64(base64_string)
  begin
    Base64.strict_decode64(base64_string)
  rescue ArgumentError => e
    raise "Virheellinen Base64-merkkijono: #{e.message}"
  end
end

# Esimerkin käyttö
original_text = "Hello, World!"
encoded = encode_to_base64(original_text)
puts "Koodattu: #{encoded}"  # SGVsbG8sIFdvcmxkIQ==

begin
  decoded = decode_from_base64(encoded)
  puts "Dekoodattu: #{decoded}"  # Hello, World!
rescue StandardError => e
  puts "Virhe: #{e.message}"
end
// Go Base64-koodaus/dekoodaus
package main

import (
    "encoding/base64"
    "fmt"
)

func encodeToBase64(text string) string {
    return base64.StdEncoding.EncodeToString([]byte(text))
}

func decodeFromBase64(base64String string) (string, error) {
    bytes, err := base64.StdEncoding.DecodeString(base64String)
    if err != nil {
        return "", fmt.Errorf("virheellinen Base64-merkkijono: %v", err)
    }
    return string(bytes), nil
}

func main() {
    originalText := "Hello, World!"
    encoded := encodeToBase64(originalText)
    fmt.Println("Koodattu:", encoded)  // SGVsbG8sIFdvcmxkIQ==
    
    decoded, err := decodeFromBase64(encoded)
    if err != nil {
        fmt.Println("Virhe:", err)
    } else {
        fmt.Println("Dekoodattu:", decoded)  // Hello, World!
    }
}
// Swift Base64-koodaus/dekoodaus
import Foundation

func encodeToBase64(_ text: String) -> String? {
    if let data = text.data(using: .utf8) {
        return data.base64EncodedString()
    }
    return nil
}

func decodeFromBase64(_ base64String: String) -> String? {
    if let data = Data(base64Encoded: base64String) {
        return String(data: data, encoding: .utf8)
    }
    return nil
}

// Esimerkin käyttö
let originalText = "Hello, World!"
if let encoded = encodeToBase64(originalText) {
    print("Koodattu: \(encoded)")  // SGVsbG8sIFdvcmxkIQ==
    
    if let decoded = decodeFromBase64(encoded) {
        print("Dekoodattu: \(decoded)")  // Hello, World!
    } else {
        print("Virhe: Ei voitu dekoodata Base64-merkkijonoa")
    }
} else {
    print("Virhe: Ei voitu koodata tekstiä")
}
' Excel VBA Base64-koodaus/dekoodaus
' Huom: Tämä vaatii viittauksen Microsoft XML, v6.0
Function EncodeToBase64(text As String) As String
    Dim xmlObj As Object
    Set xmlObj = CreateObject("MSXML2.DOMDocument")
    
    Dim xmlNode As Object
    Set xmlNode = xmlObj.createElement("b64")
    
    xmlNode.DataType = "bin.base64"
    xmlNode.nodeTypedValue = StrConv(text, vbFromUnicode)
    
    EncodeToBase64 = xmlNode.text
    
    Set xmlNode = Nothing
    Set xmlObj = Nothing
End Function

Function DecodeFromBase64(base64String As String) As String
    On Error GoTo ErrorHandler
    
    Dim xmlObj As Object
    Set xmlObj = CreateObject("MSXML2.DOMDocument")
    
    Dim xmlNode As Object
    Set xmlNode = xmlObj.createElement("b64")
    
    xmlNode.DataType = "bin.base64"
    xmlNode.text = base64String
    
    DecodeFromBase64 = StrConv(xmlNode.nodeTypedValue, vbUnicode)
    
    Set xmlNode = Nothing
    Set xmlObj = Nothing
    Exit Function
    
ErrorHandler:
    DecodeFromBase64 = "Virhe: Virheellinen Base64-merkkijono"
End Function

' Käyttö taulukossa:
' =EncodeToBase64("Hello, World!")
' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
# R Base64-koodaus/dekoodaus
# Vaatii 'base64enc'-paketin
# install.packages("base64enc")
library(base64enc)

encode_to_base64 <- function(text) {
  # Muunna teksti raaoiksi tavuiksi, sitten koodaa
  text_raw <- charToRaw(text)
  base64_encoded <- base64encode(text_raw)
  return(rawToChar(base64_encoded))
}

decode_from_base64 <- function(base64_string) {
  tryCatch({
    # Muunna base64-merkkijono raaoiksi, sitten dekoodaa
    base64_raw <- charToRaw(base64_string)
    decoded_raw <- base64decode(base64_raw)
    return(rawToChar(decoded_raw))
  }, error = function(e) {
    stop(paste("Virheellinen Base64-merkkijono:", e$message))
  })
}

# Esimerkin käyttö
original_text <- "Hello, World!"
encoded <- encode_to_base64(original_text)
cat("Koodattu:", encoded, "\n")  # SGVsbG8sIFdvcmxkIQ==

tryCatch({
  decoded <- decode_from_base64(encoded)
  cat("Dekoodattu:", decoded, "\n")  # Hello, World!
}, error = function(e) {
  cat("Virhe:", e$message, "\n")
})
% MATLAB Base64-koodaus/dekoodaus
function demo_base64()
    originalText = 'Hello, World!';
    
    % Koodaa
    encoded = encode_to_base64(originalText);
    fprintf('Koodattu: %s\n', encoded);  % SGVsbG8sIFdvcmxkIQ==
    
    % Dekoodaa
    try
        decoded = decode_from_base64(encoded);
        fprintf('Dekoodattu: %s\n', decoded);  % Hello, World!
    catch e
        fprintf('Virhe: %s\n', e.message);
    end
end

function encoded = encode_to_base64(text)
    % Muunna teksti uint8-tauluksi ja koodaa
    bytes = uint8(text);
    encoded = base64encode(bytes);
end

function decoded = decode_from_base64(base64String)
    try
        % Dekoodaa base64-merkkijono uint8-tauluksi
        bytes = base64decode(base64String);
        decoded = char(bytes);
    catch
        error('Virheellinen Base64-merkkijono');
    end
end
// C Base64-koodaus/dekoodaus käyttäen OpenSSL:ia
#include <stdio.h>
#include <string.h>
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <openssl/buffer.h>
#include <stdint.h>

char* encode_to_base64(const char* input) {
    BIO *bio, *b64;
    BUF_MEM *bufferPtr;
    
    b64 = BIO_new(BIO_f_base64());
    bio = BIO_new(BIO_s_mem());
    bio = BIO_push(b64, bio);
    
    BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
    BIO_write(bio, input, strlen(input));
    BIO_flush(bio);
    BIO_get_mem_ptr(bio, &bufferPtr);
    
    char* result = (char*)malloc(bufferPtr->length + 1);
    memcpy(result, bufferPtr->data, bufferPtr->length);
    result[bufferPtr->length] = '\0';
    
    BIO_free_all(bio);
    
    return result;
}

char* decode_from_base64(const char* input) {
    BIO *bio, *b64;
    size_t length = strlen(input);
    char* buffer = (char*)malloc(length);
    
    b64 = BIO_new(BIO_f_base64());
    bio = BIO_new_mem_buf(input, -1);
    bio = BIO_push(b64, bio);
    
    BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
    int decoded_length = BIO_read(bio, buffer, length);
    
    if (decoded_length <= 0) {
        free(buffer);
        BIO_free_all(bio);
        return NULL; // Virheellinen Base64-syöte
    }
    
    buffer[decoded_length] = '\0';
    
    BIO_free_all(bio);
    
    return buffer;
}

int main() {
    const char* original_text = "Hello, World!";
    
    char* encoded = encode_to_base64(original_text);
    printf("Koodattu: %s\n", encoded);  // SGVsbG8sIFdvcmxkIQ==
    
    char* decoded = decode_from_base64(encoded);
    if (decoded) {
        printf("Dekoodattu: %s\n", decoded);  // Hello, World!
        free(decoded);
    } else {
        printf("Virhe: Virheellinen Base64-merkkijono\n");
    }
    
    free(encoded);
    
    return 0;
}
// Rust Base64-koodaus/dekoodaus
use base64::{encode, decode};
use std::str;

fn encode_to_base64(text: &str) -> String {
    encode(text)
}

fn decode_from_base64(base64_string: &str) -> Result<String, String> {
    match decode(base64_string) {
        Ok(bytes) => {
            match str::from_utf8(&bytes) {
                Ok(text) => Ok(text.to_string()),
                Err(e) => Err(format!("Virheellinen UTF-8-jakso: {}", e))
            }
        },
        Err(e) => Err(format!("Virheellinen Base64-merkkijono: {}", e))
    }
}

fn main() {
    let original_text = "Hello, World!";
    let encoded = encode_to_base64(original_text);
    println!("Koodattu: {}", encoded);  // SGVsbG8sIFdvcmxkIQ==
    
    match decode_from_base64(&encoded) {
        Ok(decoded) => println!("Dekoodattu: {}", decoded),  // Hello, World!
        Err(e) => println!("Virhe: {}", e)
    }
}

Rajatapaukset ja huomioitavaa

Kun työskentelet Base64-koodauksen ja dekoodauksen kanssa, ole tietoinen näistä tärkeistä seikoista:

  1. Unicode ja ei-ASCII-merkit: Kun koodaat tekstiä, jossa on ei-ASCII-merkkejä, varmista oikea merkkikoodaus (yleensä UTF-8) ennen Base64-koodausta.

  2. Täyte: Standardi Base64 käyttää täytettä "=" -merkkejä varmistaakseen, että tuloksen pituus on neljän moninkertainen. Jotkut toteutukset sallivat täytteen poistamisen, mikä voi aiheuttaa yhteensopivuusongelmia.

  3. Rivinvaihdot: Perinteiset Base64-toteutukset lisäävät rivinvaihtoja (yleensä joka 76. merkki) luettavuutta varten, mutta nykyaikaiset sovellukset ohittavat usein nämä.

  4. URL-turvallinen Base64: Standardi Base64 käyttää "+" ja "/" merkkejä, joilla on erityisiä merkityksiä URL-osoitteissa. URL-konteksteissa käytä URL-turvallista Base64:ää, joka korvasi nämä "-" ja "_".

  5. Tyhjät merkit: Dekoodauksessa jotkut toteutukset ovat armollisia ja ohittavat tyhjät merkit, kun taas toiset vaativat tarkan syötteen.

  6. Koon kasvu: Base64-koodaus lisää datan kokoa noin 33 % (4 tulosmerkkiä 3 syötemerkkiä kohti).

  7. Suorituskyky: Base64-koodaus/dekoodaus voi olla laskennallisesti intensiivistä erittäin suurille tiedoille. Harkitse virtaavia lähestymistapoja suurille tiedostoille.

Viitteet

  1. RFC 4648 - Base16, Base32 ja Base64-datakoodaukset
  2. RFC 2045 - MIME Osa Yksi: Internet-viestien runkojen formaatti
  3. MDN Web Docs: Base64-koodaus ja -dekoodaus
  4. Base64 - Wikipedia
  5. MIME - Wikipedia
Feedback