Base 64

Base64  er en standard til kodning af binære data med kun 64 ASCII-tegn . Kodningsalfabetet indeholder latinske tegn AZ, az, tallene 0-9 (62 tegn i alt) og 2 ekstra tegn afhængigt af implementeringssystemet. Hver 3 originale bytes er kodet med 4 tegn (forøg med ¹⁄₃).

Dette system er meget brugt i e -mail til at repræsentere binære filer i e-mailens brødtekst ( transportkodning ).

MIME

I MIME Base64 e-mail-format er dette et skema, der konverterer en vilkårlig sekvens af bytes til en sekvens af printbare ASCII - tegn.

Standard 62 tegn er polstret +med , /og = som en speciel suffikskode.

Den komplette specifikation af denne form for Base64 findes i RFC 1421 og RFC 2045 . Dette skema bruges til at kode en sekvens af oktetter ( bytes ).

For at konvertere data til Base64 placeres den første byte i de mest signifikante otte bits i en 24-bit buffer, den næste i den midterste otte og den tredje i de mindst signifikante otte bits. Hvis mindre end tre bytes er kodet, sættes de tilsvarende bufferbit til nul. Derefter bruges hver sjette bit af bufferen, begyndende med de mest signifikante, som indekser af strengen "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", og dens tegn, peget på af indeksene, placeres i outputstrengen. Hvis kun en eller to bytes er kodet, er resultatet kun de første to eller tre tegn i strengen, og outputstrengen er polstret med to eller et tegn =. Dette forhindrer ekstra bits i at blive tilføjet til de gendannede data. Processen gentages på de resterende inputdata.

For eksempel et citat fra Leviathan af Thomas Hobbes :

Mennesket udmærker sig, ikke blot ved sin fornuft, men ved denne enestående lidenskab fra andre dyr, som er et sinds begær, som ved en udholdenhed af glæde ved den fortsatte og utrættelige generation af viden overstiger den korte heftighed af enhver kødelig nydelse. .

bliver konverteret fra ASCII til Base64, ser sådan ud:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0 aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1 c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0 aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdl LCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

I eksemplet er ordet Man kodet som TWFu. Konverteringsprocessen kan repræsenteres som følgende tabel:

Kildetekst M -en n
ASCII-koder 77 (0x4d) 97 (0x61) 110 (0x6e)
Binær visning 0 en 0 0 en en 0 en 0 en en 0 0 0 0 en 0 en en 0 en en en 0
Modtaget indeks i Base64 19 22 5 46
Slutresultat i Base64 T W F u

Base64 karakter-værdi mapping

Symbol Betyder Symbol Betyder Symbol Betyder Symbol Betyder
ti 2 otte 16 ti 2 otte 16 ti 2 otte 16 ti 2 otte 16
EN 0 000000 00 00 Q 16 010000 tyve ti g 32 100.000 40 tyve w 48 110.000 60 tredive
B en 000001 01 01 R 17 010001 21 elleve h 33 100001 41 21 x 49 110001 61 31
C 2 000010 02 02 S atten 010010 22 12 jeg 34 100010 42 22 y halvtreds 110010 62 32
D 3 000011 03 03 T 19 010011 23 13 j 35 100011 43 23 z 51 110011 63 33
E fire 000100 04 04 U tyve 010100 24 fjorten k 36 100100 44 24 0 52 110100 64 34
F 5 000101 05 05 V 21 010101 25 femten l 37 100101 45 25 en 53 110101 65 35
G 6 000110 06 06 W 22 010110 26 16 m 38 100110 46 26 2 54 110110 66 36
H 7 000111 07 07 x 23 010111 27 17 n 39 100111 47 27 3 55 110111 67 37
jeg otte 001000 ti 08 Y 24 011000 tredive atten o 40 101000 halvtreds 28 fire 56 111000 70 38
J 9 001001 elleve 09 Z 25 011001 31 19 s 41 101001 51 29 5 57 111001 71 39
K ti 001010 12 0A -en 26 011010 32 1A q 42 101010 52 2A 6 58 111010 72 3A
L elleve 001011 13 0B b 27 011011 33 1B r 43 101011 53 2B 7 59 111011 73 3B
M 12 001100 fjorten 0C c 28 011100 34 1C s 44 101100 54 2C otte 60 111100 74 3C
N 13 001101 femten 0D d 29 011101 35 1D t 45 101101 55 2D 9 61 111101 75 3D
O fjorten 001110 16 0E e tredive 011110 36 1E u 46 101110 56 2E + 62 111110 76 3E
P femten 001111 17 0F f 31 011111 37 1F v 47 101111 57 2F / 63 111111 77 3F

UTF-7

UTF-7 er en modificeret version af Base64. Dette kodningsskema bruges til UTF-16- filer som et mellemformat i MIME. UTF-7 er beregnet til brug med unicode i e-mail uden indholdstransportkodning. Den største forskel mellem denne Base64-variant og MIME er, at tegnet =ikke bruges til udfyldning, da karakteren skal escapes flere gange. I stedet er oktettens bits polstret med nuller.

Den modificerede Base64 er standardiseret i henhold til RFC 2152 ( A Mail-Safe Transformation Format of Unicode ).

IRCu

I server-til-server-protokollen, der bruges af IRC og kompatibel software, bruges Base64-versionen til at kode klient/server numeriske og binære IP-adresser. Klient- og server-numeriske data har faste størrelser, der nøjagtigt matcher antallet af Base64-tegn, så der er ikke behov for udfyldning. Binære IP-adresser udvides med foranstillede nulbits for at matche. Tegnsættet adskiller sig lidt fra MIME ved at bruge []i stedet for +/.

Applikation i webapplikationer

Takket være Base64 kan binært indhold inkluderes i html-dokumenter, hvilket skaber et enkelt dokument uden separate billeder og andre ekstra filer. Således bliver et html-dokument med grafik, lyd, video, programmer, stilarter og andre tilføjelser inkluderet i det et glimrende alternativ til andre formater af komplekse dokumenter såsom doc, docx, pdf.

Nogle applikationer koder binære data for nem medtagelse i URL'er, skjulte formularfelter.

Det er ikke altid praktisk at bruge en URL-koder over Base64-standarden, da den konverterer tegn /og +til specielle hexadecimale sekvenser. Selvom denne konvertering er reversibel, forlænger den strengen og gør det lidt sværere at parse senere. Derudover skal tegnet %, der genereres af URL-encoderen, muligvis escapes igen, når den resulterende streng sendes gennem andre systemer (f.eks. er det i SQL et skabelonelement).

Af denne grund er der en modificeret Base64 for URL , hvor tegnudfyldning =og symboler ikke bruges og erstattes af +hhv . Derfor er brugen af ​​URL-kodere/dekodere ikke længere nødvendig og har ingen effekt på længden af ​​den kodede værdi, hvilket efterlader den samme kodede form intakt til brug i relationelle databaser, webformularer og objektidentifikatorer generelt. Base64-kodning af URL'er genkender varianten, når tegnene og henholdsvis erstattes med og ( RFC 3548 , afsnit 4). /*-+/-_

Den anden variant kaldes modificeret Base64 for regulære udtryk og anvendelser !og -i stedet for *og -, for at erstatte standard Base64 +/, fordi både +og *kan reserveres til regulære udtryk (bemærk, at []brugt ovenfor i IRCu-varianten muligvis ikke virker i denne sammenhæng) .

Der er andre muligheder, der bruger _og -eller .og _hvis Base64-strengen skal bruges sammen med identifikatorer til programmer, eller .og -til brug i XML - navnetokens ( Nmtoken ), eller _i :mere begrænsede XML-identifikatorer ( Name ). I nogle tilfælde bruger URL'en Base58 , som ikke bruger tegnene +og /.

Base58

Base58 bruges til at kode URL'er i nogle systemer, hvilket adskiller sig fra Base64 i mangel af tegn i den endelige tekst, som kan opfattes af en person tvetydigt. 0 (nul), O (stor latin o ), I (stor latin i ), l (lille latin L ) er undtaget . Udelukket er også tegnene + (plus) og / (skråstreg), som ved indkodning af en URL kan føre til forkert fortolkning af adressen.

Radix-64

Radix-64 er en variation af Base64-kodning af binære data til tekstformat brugt i PGP . Den adskiller sig fra Base64 ved, at en 24-bit checksum tilføjes til slutningen.

Unix -baserede operativsystemer gemmer kodeords-hasher beregnet med krypt i filen /etc/passwd ved hjælp af B64 - kodningen . Det ligner Radix-64, men justeringssuffikset bruges =ikke, og i alfabetet er ikke-alfabetiske tegn placeret i begyndelsen: ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.

Andre anvendelser

Der er mange anvendelsesmuligheder for Base64. For eksempel brugte Thunderbird og Mozilla Suite Base64 til at skjule adgangskoder i POP3 . Base64 kan bruges som en metode til at skjule hemmeligheder uden overhead af kryptografisk nøglehåndtering , men denne tilgang er fuldstændig usikker og anbefales ikke.

Spamscannere , der ikke afkoder beskeder til Base64, går ofte glip af dem, da sådanne beskeder virker tilfældige nok til at blive forvekslet med spam . Dette bruges af spammere til at omgå grundlæggende anti-spam værktøjer.

Denne standard bruges til at kode JPEG- og PNG-billeder, for at indsætte dem i FB2 e-bøger [1] .

Der er applikationer, der bruger Base64-kodning til at sende små billeder via lange SMS [2] .

Noter

  1. Det binære element er FictionBook . fictionbook.org. Hentet 23. september 2019. Arkiveret fra originalen 22. september 2019.
  2. Billede SMS | F-Droid - Gratis og Open Source Android App Repository . f-droid.org . Hentet 23. april 2021. Arkiveret fra originalen 23. april 2021.

Links

Online kodning og afkodning