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 ).
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 |
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 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 ).
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 +/.
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 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 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.
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] .
Serialisering af digitale dataformater | |
---|---|
Tekst | |
Internet og telekommunikation |
|
Medier | |
Andet |