Waar wordt base 64-codering voor gebruikt?

Ik heb hier en daar mensen horen praten over “base 64-codering”. Waar wordt het voor gebruikt?


Antwoord 1, autoriteit 100%

Als je binaire gegevens hebt die je via een netwerk wilt verzenden, doe je dat over het algemeen niet door de bits en bytes in een onbewerkte indeling over de draad te streamen. Waarom? omdat sommige media zijn gemaakt voor het streamen van tekst. Je weet maar nooit — sommige protocollen kunnen je binaire gegevens interpreteren als controletekens (zoals een modem), of je binaire gegevens kunnen verknoeid zijn omdat het onderliggende protocol zou kunnen denken dat je een speciale tekencombinatie hebt ingevoerd (zoals hoe FTP regel vertaalt eindes).

Dus om dit te omzeilen, coderen mensen de binaire gegevens in tekens. Base64 is een van dit soort coderingen.

Waarom 64?
Omdat u er over het algemeen op kunt vertrouwen dat dezelfde 64 tekens in veel tekensets aanwezig zijn, en u er redelijk zeker van kunt zijn dat uw gegevens onbeschadigd aan de andere kant van de draad terechtkomen.


Antwoord 2, autoriteit 21%

Het is in feite een manier om willekeurige binaire gegevens in ASCII-tekst te coderen. Het duurt 4 tekens per 3 bytes aan gegevens, plus mogelijk een beetje opvulling aan het einde.

In wezen is elke 6 bits van de invoer gecodeerd in een alfabet van 64 tekens. Het “standaard” alfabet gebruikt A-Z, a-z, 0-9 en + en /, met = als opvulteken. Er zijn URL-veilige varianten.

Wikipediais een redelijk goede bron voor meer informatie.


Antwoord 3, autoriteit 13%

Base-64-codering is een manier om binaire gegevens om te zetten in tekst, zodat ze gemakkelijker kunnen worden verzonden in zaken als e-mail en HTML-gegevens.

http://en.wikipedia.org/wiki/Base64


Antwoord 4, Autoriteit 12%

Het is een tekstuele codering van binaire gegevens waarbij de resulterende tekst niets anders heeft dan letters, cijfers en de symbolen “+”, “/” en “=”. Het is een handige manier om binaire gegevens op te slaan / verzenden via media die specifiek voor tekstuele gegevens worden gebruikt.

Maar waarom base-64? De twee alternatieven voor het omzetten van binaire gegevens in de tekst die onmiddellijk in het verstand komen:

  1. Decimal: bewaar de decimale waarde van elke byte als drie nummers: 045 112 101 037 enz. Waar elke byte wordt vertegenwoordigd door 3 bytes. De gegevensbloemen drievoudig.
  2. hexadecimaal: Bewaar de bytes als hex-paren: AC 47 0D 1A enz. Waar elke byte wordt vertegenwoordigd door 2 bytes. De gegevensbloemen tweevoudig.

Base-64 kaarten 3 bytes (8 x 3 = 24 bits) in 4 tekens die 6-bits span (6 x 4 = 24 bits). Het resultaat ziet er iets uit als “TWFUIGLZIGRPC3RPB …”. Daarom is het opgeblazen gevoel slechts slechts 4/3 = 1.3333333 keer het origineel.


Antwoord 5, Autoriteit 11%

Jaren geleden, wanneer de mailingfunctionaliteit werd geïntroduceerd, dus dat was volkomen tekst gebaseerd, omdat de tijd voorbij is, behoefte aan bijlagen zoals afbeelding en media (audio, video, enz.). Wanneer deze bijlagen via internet worden verzonden (die in feite in de vorm van binaire gegevens is), is de waarschijnlijkheid van binaire gegevens die corrupt zijn, hoog in zijn onbewerkte vorm. Dus, om dit probleem aan te pakken, kwam Base64 mee.

Het probleem met binaire gegevens is dat het null-tekens bevat die in sommige talen zoals C, C++ elkaar vertegenwoordigen een einde van de tekenreeks, dus het verzenden van binaire gegevens in onbewerkte vorm die nul-bytes bevat, stopt een bestand van volledig lezen en leiden in een corrupte gegevens.

Bijvoorbeeld:

in C en C++, dit “null” -teken toont het einde van een tekenreeks. Dus “Hallo” wordt zo opgeslagen:

H E L L O

72 69 76 76 79 00

De 00 zegt “Stop HIER”.

Laten we nu eens kijken hoe BASE64-codering werkt.

Opmerking: de lengte van de tekenreeks moet een veelvoud van 3 zijn.

Voorbeeld 1:

Tekenreeks die moet worden gecodeerd: “ace”, Length=3

1) Zet elk teken om in decimaal.

a= 97, c= 99, e= 101

2) Verander elke decimaal in 8-bits binaire weergave.

97= 01100001, 99= 01100011, 101= 01100101

Gecombineerd: 01100001 01100011 01100101

3) Scheid in een groep van 6-bits.

011000 010110 001101 100101

4) Bereken binair naar decimaal

011000= 24, 010110= 22, 001101= 13, 100101= 37

5) Verborgen decimale tekens naar base64 met behulp van base64-diagram.

24= J, 22= W, 13= N, 37= l

“aas” => “YWNl”

Voorbeeld 2:

Tekenreeks die moet worden gecodeerd: “abcd” Lengte=4, het is geen veelvoud van 3. Dus om de tekenreekslengte een veelvoud van 3 te maken, moeten we 2 bits opvulling toevoegen om lengte=6 te maken. Opvulbit wordt weergegeven door “=” teken.

Opmerking: één opvulbit is gelijk aan twee nullen 00, dus twee opvulbit is gelijk aan vier nullen 0000.

Dus laten we het proces starten:–

1) Zet elk teken om in decimaal.

a= 97, b= 98, c= 99, d= 100

2) Verander elke decimaal in 8-bits binaire weergave.

97= 01100001, 98= 01100010, 99= 01100011, 100= 01100100

3) Scheid in een groep van 6 bits.

011000, 010110, 001001, 100011, 011001, 00

dus de laatste 6-bit is niet compleet, dus voegen we twee opvulbits toe die gelijk zijn aan vier nullen “0000”.

011000, 010110, 001001, 100011, 011001, 000000 ==

Nu is het gelijk. Twee gelijktekens aan het einde geven aan dat er 4 nullen zijn toegevoegd (helpt bij het decoderen).

4) Bereken binair naar decimaal.

011000= 24, 010110= 22, 001001= 9, 100011= 35, 011001= 25, 000000=0 ==

5) Verborgen decimale tekens naar base64 met behulp van base64-diagram.

24= J, 22= W, 9= j, 35= j, 25= Z, 0= A ==

“abcd” => “YWJjZA==”


Antwoord 6, autoriteit 9%

Afgezien van wat al is gezegd, zijn er twee veelvoorkomende toepassingen die niet zijn vermeld

Hashes:

Hashes zijn eenrichtingsfuncties die een blok bytes omzetten in een ander blok bytes met een vaste grootte, zoals 128-bits of 256-bits (SHA/MD5). Het converteren van de resulterende bytes naar Base64 maakt het veel gemakkelijker om de hash weer te geven, vooral wanneer u een controlesom voor integriteit vergelijkt. Hashes worden zo vaak gezien in Base64 dat veel mensen Base64 zelf als een hash beschouwen.

Cryptografie:

Omdat een coderingssleutel geen tekst hoeft te zijn maar onbewerkte bytes, is het soms nodig om deze op te slaan in een bestand of database, waarvoor Base64 van pas komt. Hetzelfde geldt voor de resulterende versleutelde bytes.

Merk op dat hoewel Base64 vaak wordt gebruikt in cryptografie, het geen beveiligingsmechanisme is. Iedereen kan de Base64-string terug converteren naar de oorspronkelijke bytes, dus het mag niet worden gebruikt als een middel om gegevens te beschermen, maar alleen als een indeling om onbewerkte bytes gemakkelijker weer te geven of op te slaan.

Certificaten

x509-certificaten in PEM-indeling zijn gecodeerd met base 64. http://how2ssl.com/articles/working_with_pem_files/


Antwoord 7, autoriteit 3%

In de vroege dagen van computers, wanneer telefoonlijn inter-systeemcommunicatie niet bijzonder betrouwbaar was, een snelle en ampère; Vuile methode voor het verifiëren van gegevensintegriteit werd gebruikt: “bit pariteit”. In deze methode zou elke doorgestuurde byte 7-bits van gegevens hebben, en de 8e zou 1 of 0 zijn, om het totale aantal van 1 bits in de byte te forceren om zelfs te zijn.

Vandaar dat 0x01 wordt doorgegeven als 0x81; 0x02 zou 0x82 zijn; 0x03 zou 0x03 enz. Blijven.

Om dit systeem te bevorderen, wanneer de ASCII-tekenset is gedefinieerd, kregen slechts 00-7F toegewezen tekens. (Tod vandaag zijn alle tekens in het bereik 80-FF niet-standaard)

Veel routers van de dag plaatsen de pariteitscontrole en byte-vertaling in hardware, waardoor de computers die aan hen zijn bevestigd om strikt te handelen met 7-bits gegevens. Deze kracht-e-mailbijlagen (en alle andere gegevens, daarom zijn HTTP & AMP; SMTP-protocollen zijn op tekst gebaseerd), om te worden geconverteerd in een tekst-alleen-indeling.

Weinigen van de routers overleefden in de jaren 90. Ik twijfel erop dat een van hen vandaag in gebruik is.


Antwoord 8, Autoriteit 3%

van http://en.wikipedia.org/wiki/base64

De term Base64 verwijst naar een specifieke mime-inhoud overdrachtscodering.
Het wordt ook gebruikt als een generieke term voor elk vergelijkbaar coderingsschema dat
codeert de binaire gegevens door het numeriek te behandelen en het in te vertalen
een basis 64-vertegenwoordiging. De specifieke basiskeuze is te wijten aan de
Geschiedenis van tekensetcodering: men kan een set van 64 kiezen
tekens die zowel een deel van de subset gemeen hebben voor de meeste coderingen,
en ook afdrukbaar. Deze combinatie laat de gegevens onwaarschijnlijk
gewijzigd in doorvoer via systemen, zoals e-mail, die waren
Traditioneel niet 8-bits schoon.

Base64 kan in verschillende contexten worden gebruikt:

  • Evolutie en Thunderbird gebruiken Base64 om e-mailwachtwoorden [1]
  • te verslaan

  • BASE64 kan worden gebruikt om tekst te verzenden en op te slaan die anders een scheidingsteken kan veroorzaken
  • BASE64 wordt vaak gebruikt als een snelle maar onzekere snelkoppeling tot obscure geheimen zonder de overhead van cryptografisch sleutelbeheer

  • Spammers gebruiken BASE64 om basic Anti-Spamming-tools te ontwijken, die vaak geen Case64 decoderen en daarom geen zoekwoorden kunnen detecteren in gecodeerde zoekwoorden
    berichten.

  • BASE64 wordt gebruikt om tekenreeksen in LDIF-bestanden te coderen
  • BASE64 wordt soms gebruikt om binaire gegevens in een XML-bestand in te sluiten, met behulp van een syntaxis vergelijkbaar met …… b.v.
    Firefox’s bladwijzers.html.
  • BASE64 wordt ook gebruikt bij het communiceren met staatsfiscale handtekeningafdrukapparaten (meestal, over seriële of parallelle poorten) naar
    minimaliseer de vertraging bij het overbrengen van ontvangstpersonages voor ondertekening.
  • BASE64 wordt gebruikt om binaire bestanden te coderen, zoals afbeeldingen binnen scripts, om te voorkomen afhankelijk van externe bestanden.
  • kan worden gebruikt om rauwe beeldgegevens in te brengen in een CSS-eigenschap, zoals achtergrondafbeelding.

Antwoord 9

Sommige transportprotocollen staan ​​alleen alfanumerieke tekens toe die moeten worden verzonden. Stel je voor gewoon een situatie waarin controletekens worden gebruikt om speciale acties te activeren en / of dat alleen een beperkte bitbreedte per karakter ondersteunt. Base64 transformeert elke invoer in een codering die alleen alfanumerieke tekens gebruikt, +, /EN DE =ALS EEN PADING-teken.


Antwoord 10

Het gebruik van Base64 Ik ga hier beschrijven is enigszins een hack. Dus als je niet van hacks houdt, ga dan niet verder.

Ik kwam in de problemen toen ik ontdekte dat MySQL’s utf8 geen 4-byte unicode-tekens ondersteunt omdat het een 3-byte-versie van utf8 gebruikt. Dus wat heb ik gedaan om volledige 4-byte unicode te ondersteunen via utf8 van MySQL? Nou, base64 codeert strings bij het opslaan in de database en base64 decodeert bij het ophalen.

Omdat base64-codering en -decodering erg snel is, werkte het bovenstaande perfect.

Je moet op de volgende punten letten:

  • Base64-codering gebruikt 33% meer opslagruimte

  • Strings die in de database zijn opgeslagen, zijn niet leesbaar voor mensen (u zou dat kunnen verkopen als een functie dat databasestrings een basisvorm van codering gebruiken).

U kunt de bovenstaande methode gebruiken voor elke opslagengine die unicode niet ondersteunt.


Antwoord 11

“Base64-coderingsschema’s worden vaak gebruikt wanneer er binaire gegevens moeten worden gecodeerd die moeten worden opgeslagen en overgedragen via media die zijn ontworpen om met tekstuele gegevens om te gaan. Dit is om ervoor te zorgen dat de gegevens ongewijzigd blijven tijdens het transport”(Wiki, 2017)

Voorbeeld kan het volgende zijn: u heeft een webservice die alleen ASCII-tekens accepteert. U wilt de gegevens van de gebruiker opslaan en vervolgens overbrengen naar een andere locatie (API), maar de ontvanger wil onaangeroerde gegevens ontvangen. Base64 is daar voor. . . Het enige nadeel is dat base64-codering ongeveer 33% meer ruimte nodig heeft dan gewone strings.

Een ander voorbeeld:: uenc = url encoded = aHR0cDovL2xvYy5tYWdlbnRvLmNvbS9hc2ljcy1tZW4tcy1nZWwta2F5YW5vLXhpaS5odG1s = .

Zoals je kunt zien, kunnen we geen teken “/” in de URL plaatsen als we de laatst bezochte URL als parameter willen verzenden, omdat we de kenmerk-/waarderegel voor “MOD herschrijven” – GET-parameter zouden overtreden.

Een volledig voorbeeld zou zijn: “http://loc.querytip.com/checkout/cart/add/uenc/http://loc.magento.com/asics-men- s-gel-kayano-xii.html / product / 93 /


Antwoord 12

het wordt gebruikt voor het converteren van willekeurige binaire gegevens naar ASCII-tekst.

Bijvoorbeeld worden e-mailbijlagen verzonden op deze manier.


Antwoord 13

Ik gebruik het in een praktisch gevoel wanneer we grote binaire objecten (afbeeldingen) via webservices overbrengen. Dus wanneer ik een C #-webservice test met behulp van een Python-script, kan het binaire object worden herroept met een beetje magie.

[in python]

import base64
imageAsBytes = base64.b64decode( dataFromWS )

Antwoord 14

Meestal heb ik gezien het gebruikt om binaire gegevens in contexten te coderen die alleen ASCII – of een eenvoudige tekensets kunnen verwerken.


Antwoord 15

Om een ​​beetje uit te breiden op wat Brad zegt: veel transportmechanismen voor e-mail en usenet en andere manieren van bewegende gegevens zijn niet “8 bits schoon”, wat betekent dat tekens buiten de standaard ASCII-tekenset in transit kunnen worden verminkt – 0x0D kan bijvoorbeeld worden gezien als een koets rendement en veranderd in een koetsretour- en lijnvoeding. Basis 64 Kaart alle binaire tekens in verschillende standaard ASCII-letters en cijfers en interpunctie, zodat ze niet op deze manier worden verminkt.


Antwoord 16

BASE64

Base64 is een generieke term voor een aantal vergelijkbare coderingsregelingen die coderen met binaire gegevens door het numeriek te behandelen en het in een basis 64-vertegenwoordiging te vertalen. De BASE64-termijn is afkomstig van een specifieke mime-inhoud overdrachtscodering.

Base64-coderingsschema’s worden vaak gebruikt wanneer er behoefte is aan binaire gegevens die moeten worden opgeslagen en overgedragen over media die zijn ontworpen om te behandelen met tekstuele gegevens. Dit is ervoor te zorgen dat de gegevens intact blijven zonder modificatie tijdens het transport. Base64 wordt gewoonlijk gebruikt in een aantal applicaties inclusief e-mail via MIME, en het opslaan van complexgegevens in XML.


Antwoord 17

Eén hexadecimaal cijfer is van één knabbelen (4 bits). Twee hapjes maken 8 bits die ook 1 byte worden genoemd.

MD5 genereert een 128-bits output die wordt weergegeven met behulp van een sequentie van 32 hexadecimale cijfers, die op zijn beurt 32 * 4 = 128 bits zijn. 128 bits maken 16 bytes (aangezien 1 byte 8 bits is).

Elk BASE64-tekens codeert 6 bits (behalve het laatste niet-pad-personage dat 2, 4 of 6 bits kan coderen; en de laatste pad-tekens, indien aanwezig). Daarom vereist een codering van Per Base64, een 128-bits hash nodig ten minste ⌈128 / 6⌉ = 22 tekens, plus pad indien aanwezig.

Gebruik BASE64, kunnen we de gecodeerde uitvoer van onze gewenste lengte (6, 8 of 10) produceren.
Als we ervoor kiezen om 8 char lange output te beslissen, neemt het slechts 8 bytes in, terwijl het 16 bytes was voor 128-bits hash-uitvoer.

Dus, naast de beveiliging, wordt BASE64-codering ook gebruikt om de verbruikte ruimte te verminderen.


Antwoord 18

Base64 kan voor vele doeleinden worden gebruikt.

De primaire reden is om binaire gegevens om te zetten naar iets dat voorbijgaat.

Ik gebruik het soms om JSON-gegevens rond te gaan van de ene site naar de andere, bewaar informatie
in cookies over een gebruiker.

Opmerking:
Je kunt het “gebruiken voor codering – ik zie niet waarom mensen zeggen dat je niet kunt, en dat het geen codering is, hoewel het gemakkelijk breekbaar zou zijn en fronste is. Encryptie betekent niets meer dan het omzetten van één reeks gegevens naar een andere reeks gegevens die later kunnen worden gedecodeerd of niet, en dat is wat base64 doet.


Antwoord 19

Base64is een binair naar een tekstcoderingsschemadat binaire gegevens vertegenwoordigt in een ASCII-tekenreeksindeling. Het is ontworpen om gegevens die in binair formaat zijn opgeslagen over de netwerkkanalen te vervoeren.

Base64-mechanisme gebruikt 64 tekens om te coderen. Deze karakters bestaan uit:

  1. 10 numerieke waarde: d.w.z. 0,1,2,3,…,9
  2. 26 hoofdletters: d.w.z. A,B,C,D,…,Z
  3. 26 kleine letters: d.w.z. a,b,c,d,…,z
  4. 2 speciale tekens (deze tekens zijn afhankelijk van het besturingssysteem): bijv. +,/

Hoe base64 werkt

De stappen om een string te coderen met het base64-algoritme zijn als volgt:

  1. Tel het aantal tekens in een tekenreeks. Als het geen veelvoud van 3 is, vul het dan in met speciale tekens (bijv. =) om het een veelvoud van 3 te maken.
  2. Converteer string naar ASCII binair formaat 8-bit met behulp van de ASCII-tabel.
  3. Verdeel na het converteren naar een binair formaat binaire gegevens in stukjes van 6 bits.
  4. Converteer brokken van 6-bits binaire gegevens naar decimale getallen.
  5. Converteer decimalen naar tekenreeksen volgens de base64-indextabel. Deze tabel kan een voorbeeld zijn, maar zoals ik al zei, 2 speciale tekens kunnen verschillen.

Nu hebben we de gecodeerde versie van de invoerreeks.

Laten we een voorbeeld maken: converteer tekenreeks THSnaar base64-coderingstekenreeks.

  1. Tel het aantal tekens: het is al een veelvoud van 3.

  2. Converteer naar ASCII binair formaat 8-bit. We hebben (T)01010100(H)01001000(S)01010011

  3. Verdeel binaire gegevens in stukjes van 6 bits. We hebben 010101 000100 100001 010011

  4. Converteer brokken van 6-bits binaire gegevens naar decimale getallen. We hebben 21 4 33 19

  5. Converteer decimalen naar tekenreeksen volgens de base64-indextabel. We hebben VEhT

Other episodes