Baza 64

Base64  este un standard pentru codificarea datelor binare folosind doar 64 de caractere ASCII . Alfabetul de codare conține caractere latine AZ, az, numere 0-9 (62 de caractere în total) și 2 caractere suplimentare în funcție de sistemul de implementare. Fiecare 3 octeți originali sunt codificați cu 4 caractere (incrementare cu ¹⁄₃).

Acest sistem este utilizat pe scară largă în e- mail pentru a reprezenta fișiere binare în corpul e-mailului ( codare transport ).

MIME

În formatul de e-mail MIME Base64 , aceasta este o schemă care convertește o secvență arbitrară de octeți într-o secvență de caractere ASCII imprimabile .

Cele 62 de caractere standard sunt completate +cu , /și = ca un cod sufix special.

Specificația completă a acestei forme de Base64 se găsește în RFC 1421 și RFC 2045 . Această schemă este folosită pentru a codifica o secvență de octeți ( octeți ).

Pentru a converti datele în Base64, primul octet este plasat în cei mai semnificativi opt biți ai unui buffer de 24 de biți, următorul în mijlocul opt biți și al treilea în cei mai puțin semnificativi opt biți. Dacă sunt codificați mai puțin de trei octeți, atunci biții tampon corespunzători sunt setați la zero. Apoi fiecare șase biți ai tamponului, începând cu cei mai semnificativi, sunt utilizați ca indici ai șirului „ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”, iar caracterele sale, indicate de indicii, sunt plasate în șir de ieșire. Dacă sunt codificați doar unul sau doi octeți, rezultatul sunt doar primele două sau trei caractere ale șirului, iar șirul de ieșire este completat cu două sau un caracter =. Acest lucru previne adăugarea de biți suplimentari la datele recuperate. Procesul se repetă pe datele de intrare rămase.

De exemplu, un citat din Leviathan de Thomas Hobbes :

Omul se distinge nu numai prin rațiune, ci și prin această pasiune singulară față de alte animale, care este o poftă a minții, care, printr-o perseverență a încântării în generarea continuă și neobosită a cunoașterii, depășește scurta vehemență a oricărei plăceri carnale. .

fiind convertit din ASCII în Base64, arată astfel:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0 aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1 c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0 aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdl LCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

În exemplu, cuvântul Man este codificat ca TWFu. Procesul de conversie poate fi reprezentat ca următorul tabel:

Text sursă M A n
coduri ASCII 77 (0x4d) 97 (0x61) 110 (0x6e)
Vedere binară 0 unu 0 0 unu unu 0 unu 0 unu unu 0 0 0 0 unu 0 unu unu 0 unu unu unu 0
Index primit în Base64 19 22 5 46
Rezultatul final în Base64 T W F u

Maparea caracter-valoare Base64

Simbol Sens Simbol Sens Simbol Sens Simbol Sens
zece 2 opt 16 zece 2 opt 16 zece 2 opt 16 zece 2 opt 16
A 0 000000 00 00 Q 16 010000 douăzeci zece g 32 100000 40 douăzeci w 48 110000 60 treizeci
B unu 000001 01 01 R 17 010001 21 unsprezece h 33 100001 41 21 X 49 110001 61 31
C 2 000010 02 02 S optsprezece 010010 22 12 i 34 100010 42 22 y cincizeci 110010 62 32
D 3 000011 03 03 T 19 010011 23 13 j 35 100011 43 23 z 51 110011 63 33
E patru 000100 04 04 U douăzeci 010100 24 paisprezece k 36 100100 44 24 0 52 110100 64 34
F 5 000101 05 05 V 21 010101 25 cincisprezece l 37 100101 45 25 unu 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
eu opt 001000 zece 08 Y 24 011000 treizeci optsprezece o 40 101000 cincizeci 28 patru 56 111000 70 38
J 9 001001 unsprezece 09 Z 25 011001 31 19 p 41 101001 51 29 5 57 111001 71 39
K zece 001010 12 0A A 26 011010 32 1A q 42 101010 52 2A 6 58 111010 72 3A
L unsprezece 001011 13 0B b 27 011011 33 1B r 43 101011 53 2B 7 59 111011 73 3B
M 12 001100 paisprezece 0C c 28 011100 34 1C s 44 101100 54 2C opt 60 111100 74 3C
N 13 001101 cincisprezece 0D d 29 011101 35 1D t 45 101101 55 2D 9 61 111101 75 3D
O paisprezece 001110 16 0E e treizeci 011110 36 1E u 46 101110 56 2E + 62 111110 76 3E
P cincisprezece 001111 17 0F f 31 011111 37 1F v 47 101111 57 2F / 63 111111 77 3F

UTF-7

UTF-7 este o versiune modificată a Base64. Această schemă de codificare este utilizată pentru fișierele UTF-16 ca format intermediar în MIME. UTF-7 este destinat utilizării cu Unicode în e-mail fără codificare de transport de conținut. Principala diferență dintre această variantă Base64 și MIME este că caracterul =nu este folosit pentru umplutură, deoarece caracterul trebuie să fie evadat de mai multe ori. În schimb, biții octetului sunt umpluți cu zerouri.

Base64 modificat este standardizat conform RFC 2152 ( A Mail-Safe Transformation Format of Unicode ).

IRCu

În protocolul server-la-server utilizat de IRC și software-ul compatibil, versiunea Base64 este utilizată pentru a codifica adresele IP numerice și binare client/server. Datele numerice ale clientului și serverului au dimensiuni fixe care se potrivesc exact cu numărul de caractere Base64, deci nu este nevoie de umplutură. Adresele IP binare sunt extinse cu zero biți de început pentru a se potrivi. Setul de caractere diferă ușor de MIME prin utilizarea []în loc de +/.

Aplicație în aplicații web

Datorită Base64, conținutul binar poate fi inclus în documentele html, creând un singur document fără imagini separate și alte fișiere suplimentare. Astfel, un document html cu grafică, audio, video, programe, stiluri și alte completări incluse în el devine o alternativă excelentă la alte formate de documente complexe precum doc, docx, pdf.

Unele aplicații codifică date binare pentru includerea ușoară în adrese URL, câmpuri de formular ascunse.

Utilizarea unui codificator URL peste standardul Base64 nu este întotdeauna convenabilă, deoarece convertește caractere /și +în secvențe hexazecimale speciale. Deși această conversie este reversibilă, prelungește șirul și îl face puțin mai dificil de analizat mai târziu. În plus, este posibil ca caracterul %generat de codificatorul URL să trebuiască să fie evadat din nou atunci când trece șirul rezultat prin alte sisteme (de exemplu, în SQL este un element șablon).

Din acest motiv, există un Base64 modificat pentru URL , în care umplutura cu caractere =și simbolurile nu sunt folosite și sunt înlocuite cu +și respectiv . Prin urmare, utilizarea codificatoarelor/decodificatoarelor URL nu mai este necesară și nu are niciun efect asupra lungimii valorii codificate, lăsând intactă aceeași formă codificată pentru utilizarea în baze de date relaționale, formulare web și identificatori de obiect în general. Codarea Base64 a URL -urilor recunoaște varianta atunci când caracterele și sunt înlocuite, respectiv, cu și ( RFC 3548 , secțiunea 4). /*-+/-_

Cealaltă variantă se numește Base64 modificată pentru expresii regulate și utilizări !și -în loc de *și -, pentru a înlocui standardul Base64 +/, deoarece ambele +și *pot fi rezervate pentru expresiile regulate (rețineți că []folosit mai sus în varianta IRCu poate să nu funcționeze în acest context) .

Există și alte opțiuni care folosesc _și -sau .și _dacă șirul Base64 urmează să fie utilizat împreună cu identificatorii pentru programe sau .și -pentru utilizarea în simboluri de nume XML ( Nmtoken ) sau _în :identificatori XML mai limitati ( Nume ). În unele cazuri, adresa URL folosește Base58 , care nu folosește caracterele +și /.

Base58

Base58 este folosit pentru a codifica adresele URL în unele sisteme, care diferă de Base64 prin absența caracterelor din textul final care pot fi percepute de o persoană în mod ambiguu. Sunt excluse 0 (zero), O (majusculă latină o ), I (majuscula latină i ), l (majusculă latină L ) . De asemenea, sunt excluse caracterele + (plus) și / (slash), care, atunci când se codifică o adresă URL , pot duce la interpretarea incorectă a adresei.

Radix-64

Radix-64 este o variație a codificării Base64 a datelor binare în format text utilizat în PGP . Diferă de Base64 prin faptul că o sumă de control de 24 de biți este adăugată la sfârșit.

Sistemele de operare bazate pe Unix stochează hash-uri de parole calculate cu crypt în fișierul /etc/passwd folosind codificarea B64 . Este similar cu Radix-64, dar sufixul de aliniere =nu este utilizat și în alfabet, caracterele nealfabetice sunt plasate la început: ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.

Alte utilizări

Există multe utilizări pentru Base64. De exemplu, Thunderbird și Mozilla Suite au folosit Base64 pentru a ascunde parolele în POP3 . Base64 poate fi folosit ca metodă de a ascunde secrete fără costul general al gestionării cheilor criptografice , totuși această abordare este complet nesigură și nu este recomandată.

Scanerele de spam care nu decodifică mesajele către Base64 le lipsesc adesea, deoarece astfel de mesaje par suficient de aleatorii pentru a fi confundate cu spam. Acesta este folosit de spammeri pentru a ocoli instrumentele de bază anti-spam.

Acest standard este folosit pentru a codifica imagini JPEG și PNG, pentru a le insera în cărțile electronice FB2 [1] .

Există aplicații care folosesc codificarea Base64 pentru a trimite imagini mici prin SMS lungi [2] .

Note

  1. Elementul binar este FictionBook . fictionbook.org. Preluat la 23 septembrie 2019. Arhivat din original la 22 septembrie 2019.
  2. Imagine SMS | F-Droid - Depozitul de aplicații Android gratuit și cu sursă deschisă . f-droid.org . Preluat la 23 aprilie 2021. Arhivat din original la 23 aprilie 2021.

Link -uri

Codificare și decodare online