Frage

Ich habe Leute reden über „Basis-64-Codierung“ hier und da zu hören. Was wird es verwendet?

War es hilfreich?

Lösung

Wenn Sie einige binäre Daten, die Sie in einem Netzwerk versenden möchten, Sie in der Regel tun es nicht nur um das Streaming der Bits und Bytes über den Draht in einem Rohformat. Warum? weil einige Medien für das Streaming von Text gemacht werden. Man kann nie wissen - einige Protokolle können Ihre Binärdaten als Steuerzeichen interpretieren (wie ein Modem) oder Ihre Binärdaten werden geschraubt könnte, weil das zugrundeliegende Protokoll könnte denken, dass Sie ein Sonderzeichen Kombination eingegeben haben (wie, wie FTP Linie übersetzt Endungen).

Also, dies zu umgehen, kodieren Menschen die binären Daten in Zeichen. Base64 ist eine dieser Arten von Kodierungen.

Warum 64?
Da Sie in der Regel auf den gleichen 64 Zeichen vorhanden sind, in vielen Zeichensätzen verlassen können, und Sie können ziemlich sicher sein, dass Ihre Daten los unverfälscht auf der anderen Seite des Drahtes beenden.

Andere Tipps

Es ist im Grunde eine Art und Weise beliebige binäre Daten codieren, in ASCII-Text. Es dauert 4 Zeichen je 3 Bytes von Daten, sowie möglicherweise ein bisschen padding am Ende.

Wesentlichen jeweils 6 Bits des Eingangs wird in einem 64-Zeichen-Alphabet codiert. Das "Standard" Alphabet verwendet ein-Z, a-z, 0-9 und + und /, mit = als Füllzeichen. Es gibt URL sichere Varianten.

Wikipedia ist eine ziemlich gute Quelle für weitere Informationen.

Base-64-Codierung ist eine Möglichkeit, binäre Daten zu nehmen und sie in Text drehen, so dass es mehr ist leicht in Dingen wie E-Mail und HTML-Formulardaten übertragen werden.

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

Es ist eine Textkodierung von binären Daten, bei denen der resultierende Text nichts anderes als Buchstaben hat, Zahlen und die Symbole „+“, „/“ und „=“. Es ist eine bequeme Möglichkeit zum Speichern / Übertragen von Binärdaten über Medien, die speziell für Textdaten verwendet wird.

Aber warum Base-64? Die beiden Alternativen für binäre Daten in Text umgewandelt werden, die sofort in den Sinn kommen, sind:

  1. Dezimal: Speichern der Dezimalwert jedes Byte als drei Zahlen: 045 112 101 037 usw., wobei jedes Byte für Byte 3 dargestellt ist. Die Daten bläht das Dreifache.
  2. Hexadezimal: speichern die Bytes als Hexadezimalwert: AC 47 0D 1A usw. wobei jedes Byte durch 2 Bytes repräsentiert wird. Die Daten bläht zweifach.

Base-64 Karten 3 Bytes (8 x 3 = 24 Bits) in 4 Zeichen, die 6-Bit (6 x 4 = 24 Bits) überspannt. Das Ergebnis sieht so etwas wie „TWFuIGlzIGRpc3Rpb ...“. Deshalb ist die Blähungen ist nur ein bloßes 4/3 = 1,3333333 mal das Original.

Neben was bereits gesagt worden ist, zwei sehr häufige Anwendungen, die nicht aufgeführt sind, sind

Hashes:

Hashes sind Einwegfunktionen, die einen Block von Bytes in einen anderen Block von Bytes mit einer festen Größe, wie beispielsweise 128-Bit oder 256-Bit (SHA / MD5) zu transformieren. Umwandeln der resultierenden Bytes in Base64 macht es viel einfacher, vor allem den Hash anzuzeigen, wenn Sie eine Prüfsumme für Integrität zu vergleichen. Hashes sind so oft in Base64 gesehen, dass viele Menschen sich irren Base64 als Hash.

Cryptography:

Da ein Verschlüsselungsschlüssel nicht über Text, sondern roh Bytes sein, es ist manchmal notwendig, es in einer Datei oder Datenbank zu speichern, die Base64 für praktisch ist. Gleiche mit dem resultierenden verschlüsselten Bytes.

Beachten Sie, dass obwohl Base64 oft in der Kryptographie verwendet wird, ist nicht ein Sicherheitsmechanismus. Jeder kann den Base64-String wieder in seinem ursprünglichen Bytes konvertieren, so sollte es nicht als Mittel verwendet werden, um Daten zu schützen, nur als Format rohes Bytes leichter anzuzeigen oder zu speichern.

Zertifikate

x509-Zertifikate im PEM-Format sind Basis 64 codiert. http://how2ssl.com/articles/working_with_pem_files/

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

  

Der Begriff Base64 bezieht sich auf eine bestimmte MIME-Content-Transfer-Codierung.   Es wird auch als Oberbegriff für jedes ähnliches Codierungsschema verwendet, das   Binärdaten codiert durch numerisch Behandlung und übersetzen sie in   eine Basis 64 abweichen. Die besondere Wahl der Base ist aufgrund der   Geschichte der Zeichensatzcodierung: Man kann einen Satz von 64 wählen   Zeichen, die beide Teil der Teilmenge in den meisten Codierungen ist,   und auch bedruckbar. Diese Kombination lässt die Daten unwahrscheinlich sein   im Transit durch Systeme, wie beispielsweise E-Mail-modifiziert, was waren   traditionell nicht 8-Bit-sauber.

     

Base64 kann in einer Vielzahl von Kontexten verwendet werden:

     
      
  • Evolution und Thunderbird Verwendung Base64 zu verschleiern E-Mail-Passwörter [1]
  •   
  • kann Base64 verwendet werden, zu übertragen und zu speichern Text, der sonst Begrenzer Kollision verursachen könnte
  •   
  • Base64 wird oft als eine schnelle, aber unsichere Verknüpfung verwendet Geheimnisse zu verschleiern, ohne den Overhead von kryptographischer Schlüssel-Management entstehen

  •   
  • Spammers verwendet Base64 grundlegenden anti-Spam-Tools zu umgehen, die oft nicht Base64 dekodieren und daher keine Keywords in codierten erkennen kann   Mitteilungen.

  •   
  • Base64 wird verwendet, um Zeichenketten in LDIF-Dateien zu kodieren
  •   
  • Base64 wird manchmal verwendet, um binäre Daten in einer XML-Datei einbetten, mit einer Syntax ähnlich wie ...... z.B.   Firefox bookmarks.html.
  •   
  • Base64 wird auch verwendet, wenn mit staatlicher Steuer Signature Druckvorrichtungen (in der Regel über serielle oder parallele Ports), die zu   minimieren die Verzögerung bei der für die Unterzeichnung Empfang Zeichen übertragen.
  •   
  • Base64 wird verwendet, um binäre Dateien zu kodieren, wie Bilder in Skripten in Abhängigkeit von externen Dateien zu vermeiden.
  •   
  • Kann verwendet werden, um Rohbilddaten in eine CSS-Eigenschaft einbetten wie Hintergrund-Bild.
  •   

In den frühen Tagen des Computers, wenn Telefonleitung Intersystem-Kommunikation nicht besonders zuverlässig war, eine quick & dirty Methode der Datenintegrität Überprüfung verwendet wurde: „Bit Parität“. Bei diesem Verfahren wird jedes Byte übertragen würde, 7 Bits von Daten hat, und die 8. wäre 1 oder 0 ist, um die Gesamtzahl von 1-Bits in dem Byte zu zwingen, selbst zu sein.

Damit würde 0x01 transmited als 0x81 werden; 0x02 wäre 0x82; 0x03 bleiben würde 0x03 etc.

, dieses System zu fördern, wenn der ASCII-Zeichensatz definiert wurde, wurden nur 00-7F Zeichen zugeordnet. (Auch heute noch alle setzen Zeichen im Bereich von 80-FF sind Nicht-Standard)

Viele Router des Tages stellen die Paritätsprüfung und Byte-Übersetzung in Hardware und zwingt die ihnen angeschlossenen Computer zu streng mit 7-Bit-Daten umgehen. Diese Kraft E-Mail-Anhänge (und alle anderen Daten, weshalb HTTP & SMTP-Protokolle textbasierte sind), in einen Nur-Text-Format konvertieren.

Nur wenige der Router überlebt in den 90er Jahren. Ich bezweifle stark jeder von ihnen im Einsatz ist heute.

Einige Transportprotokolle erlauben nur alphanumerische Zeichen übertragen werden. Man stelle sich eine Situation, in der Steuerzeichen verwendet werden spezielle Aktionen auslösen und / oder das unterstützt nur eine begrenzte Bitbreite pro Zeichen. Base64 jede Eingabe in eine Codierung umwandelt, die nur alphanumerische Zeichen verwendet, +, / und = als Füllzeichen.

Die Verwendung von Base64 Ich werde hier beschreiben, ist etwas ein Hack. Also, wenn Sie Hacks nicht mögen, bitte gehen Sie nicht auf.

ging ich in Schwierigkeiten, als ich entdeckte, dass die MySQL-UTF-8 nicht 4-Byte-Unicode-Zeichen unterstützt, da es eine 3-Bit-Version von UTF-8 verwendet. Also, was ich habe vollen 4-Byte Unicode über MySQL utf8 unterstützen? Nun, base64 kodieren Saiten beim Speichern in die Datenbank und Base64 dekodieren beim Abrufen.

Da Base64-Codierung und Decodierung ist sehr schnell, die oben perfekt funktioniert.

Sie haben die folgenden Punkte zu beachten:

  • Base64-Kodierung verwendet 33% mehr Lager

  • Strings gespeichert werden nicht in der Datenbank menschlich lesbar sein (Sie, dass als Feature verkaufen könnte, dass Datenbank-Strings eine grundlegende Form der Verschlüsselung verwenden).

Sie könnten das obige Verfahren für jeden Speicher-Engine verwenden, die Unicode nicht unterstützt.

Es wird verwendet für beliebige Binärdaten in ASCII-Text umgewandelt wird.

Zum Beispiel E-Mail-Anhänge auf diese Weise gesendet werden.

ich es in einem praktischen Sinne verwenden, wenn wir große binäre Objekte (Bilder) über Web-Service übertragen. Also, wenn ich einen C # Web-Service am Testen eines Python-Skript verwendet wird, kann das binäre Objekt mit einer wenig Magie neu erstellt werden.

[In Python]

import base64
imageAsBytes = base64.b64decode( dataFromWS )

„Base64-Kodierungsschemata häufig verwendet werden, wenn es notwendig ist, um binäre Daten zu codieren, die über Medien werden muss gespeichert und übertragen, die entworfen sind mit Textdaten zu behandeln. Damit soll sichergestellt werden, dass die Daten ohne Änderung während des Transports erhalten bleibt“(Wiki, 2017)

Beispiel könnte sein, die folgenden: Sie haben einen Web-Service, die nur ASCII-Zeichen akzeptieren. Sie speichern möchten und dann Benutzerdaten an einen anderen Ort (API) zu übertragen, aber Empfänger wollen unangetastet Daten empfangen. Base64 ist dafür. . . Der einzige Nachteil ist, dass Base64-Kodierung um 33% mehr Platz als normale Strings benötigen.

Ein weiteres Beispiel :: uenc = url = codiert aHR0cDovL2xvYy5tYWdlbnRvLmNvbS9hc2ljcy1tZW4tcy1nZWwta2F5YW5vLXhpaS5odG1s = http :. //loc.querytip.com/asics-men-s-gel-kayano-xii.html

Wie Sie sehen können wir nicht char setzen können „/“ in URL, wenn wir wollen URL als Parameter zuletzt besuchten senden, weil wir würden Attribut / Wert-Regel für „MOD Rewrite“ break - Parameter GET

.

Ein vollständiges Beispiel wäre: „ http://loc.querytip.com/checkout/cart/add/uenc/http://loc.magento.com/asics-men- s-Gel-kayano-xii.html / product / 93 /

Meistens, ich habe es gesehen verwendet, um binäre Daten in Kontexten zu kodieren, die ascii nur verarbeiten kann - oder eine einfache -. Zeichensätze

ein wenig zu erweitern, was Brad sagt: viele Transportmechanismen für E-Mail und Usenet und andere Möglichkeiten der bewegten Daten sind nicht „8-Bit-clean“, was bedeutet, dass Zeichen außerhalb des Standard-ASCII-Zeichensatz könnte im Transit verstümmelt werden - zum Beispiel könnte 0x0D als Wagenrücklauf zu sehen ist, und in einen Wagenrücklauf und Zeilenvorschub. 64 Base bildet alle binären Zeichen in mehrere Standard-ASCII-Buchstaben und Zahlen und Satzzeichen, damit sie nicht auf diese Weise verstümmelt werden.

Vor Jahren, als Funktionalität Mailing eingeführt wurde, so dass völlig textbasierte war, wie die Zeit verging, für Anlagen wie Bild benötigt und Medien (Audio, Video, etc.) entstanden. Wenn diese Anhänge über das Internet gesendet werden (was im Grunde genommen in Form von binären Daten ist), ist die Wahrscheinlichkeit von binären Daten korrupt immer in seiner Rohform hoch. Also, zur Bewältigung dieses Problem BASE64 kam.

Das Problem mit binären Daten ist, dass es Null-Zeichen enthält, die in einigen Sprachen wie C, C Ende der Zeichenkette darstellen ++ so Binärdaten in Rohform Senden NULL-Bytes enthält, wird aus einer Datei stoppen vollständig gelesen werden und führen in einem korrupten Daten.

Beispiel:

In C und C ++, diese "null" Charakter zeigt das Ende eines Strings. So wird gespeichert "HALLO" wie folgt aus:

H E L L O

72 69 76 76 79 00

Die 00 sagt "stop here".

Lassen Sie uns nun tauchen in, wie BASE64 Codierung funktioniert.

Punkt zu beachten:. Länge der Saite in Vielfaches von 3 sein sollte

Beispiel 1:

String codiert werden: „ace“, Länge = 3

1) Konvertieren jedes Zeichen in Dezimalzahlen.

a = 97, c = 99, e = 101

2) Ändern jede dezimale auf 8-Bit Binärdarstellung.

97 = 01100001, 99 = 01100011, 101 = 01100101

In Kombination: 01100001 01100011 01100101

3) Separate in einer Gruppe von 6-Bit.

011000 010110 001101 100101

4) Berechnen binär dezimal

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

5) Covert dezimal Zeichen base64 base64 Diagramm verwendet wird.

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

„ace“ => „YWNl“

Beispiel 2:

String codiert werden: „ABCD“ Länge = 4, ist es nicht Vielfaches von 3 ist so Stringlänge Vielfaches von 3 zu machen, müssen wir 2-Bit-Polsterung in den length = 6. Padding Bit machen wird dargestellt durch „=“ schreiben.

Punkt zu beachten: Ein Padding-Bits gleich zwei Nullen 00 so zwei Padding-Bits vier Nullen 0000 gleich

.

läßt also den Prozess starten: -

1) Konvertieren jedes Zeichen in Dezimalzahlen.

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

2) Ändern jede dezimale auf 8-Bit Binärdarstellung.

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

3) werden getrennt in einer Gruppe von 6-Bit.

011000, 010110, 001001, 100011, 011001, 00

so die letzten 6-Bit ist nicht vollständig, so fügen wir zwei Padding-Bits, die vier Nullen „0000“ entspricht.

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

Nun ist es gleich. Zwei Gleichen am Ende unterzeichnen zeigen, dass 4 Nullen wurden hinzugefügt (hilft bei der Dekodierung).

4) Berechnen binär dezimal.

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

5) Covert dezimal Zeichen base64 base64 Diagramm verwendet wird.

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

„ABCD“ => „YWJjZA ==“

Base64

Base64 ist ein allgemeiner Begriff für eine Anzahl von ähnlichen Codierungsschemata, die binären Daten codieren, indem sie numerisch zu behandeln und sich in eine Basis-64-Darstellung zu übersetzen. Der Base64 Begriff stammt aus einer bestimmten MIME-Content-Transfer-Codierung.

Base64-Kodierungsschemata häufig verwendet werden, wenn es notwendig ist, um binäre Daten zu codieren, die über Medien werden muss gespeichert und übertragen, die entworfen sind mit Textdaten zu behandeln. Damit soll sichergestellt werden, dass die Daten ohne Modifikation während des Transports erhalten bleibt. Base64 wird üblicherweise in einer Reihe von Anwendungen wie E-Mail über MIME und Speicherung komplexer Daten in XML verwendet wird.

Base64 können Sie für viele Zwecke nutzen.

Der Hauptgrund ist, um binäre Daten zu etwas passierbar zu konvertieren.

ich es manchmal verwenden, um JSON-Daten um von einem Ort zum anderen, speichern Informationen weitergeben in Cookies über einen Benutzer.

Hinweis: Sie „kann“ es für die Verschlüsselung verwenden - ich sehe nicht, warum die Leute sagen, Sie können nicht, und dass es keine Verschlüsselung, obwohl es leicht zerbrechlich wäre und ist verpönt. Verschlüsselung bedeutet nichts anderes, als die Umwandlung einer Reihe von Daten auf eine andere Reihe von Daten, die entweder später entschlüsselt werden kann oder nicht, und das ist, was base64 tut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top