Base64

Base64 ist eine Gruppe von ähnlichen Verschlüsselungsschemas, die binäre Daten in einem ASCII-Schnur-Format durch das Übersetzen davon in eine Basis 64 Darstellung vertreten. Der Base64-Begriff entsteht aus einer spezifischen PANTOMIME-Inhalt-Übertragungsverschlüsselung.

Base64 Verschlüsselungsschemas werden allgemein verwendet, wenn es ein Bedürfnis gibt, binäre Daten zu verschlüsseln, der versorgt und über Medien übertragen werden muss, die entworfen werden, um sich mit Textdaten zu befassen. Das soll sicherstellen, dass die Daten intakt modifikationsfrei während des Transports bleiben. Base64 wird in mehreren Anwendungen einschließlich der E-Mail über die PANTOMIME und Speicherung komplizierter Daten in XML allgemein verwendet.

Design

Die besondere Wahl der Codierung, die für die 64 für die Basis erforderlichen Charaktere ausgewählt ist, ändert sich zwischen Durchführungen. Die allgemeine Regel ist, eine Reihe 64 Charaktere zu wählen, der sowohl ein Teil einer Teilmenge ist, die für den grössten Teil von encodings üblich ist, als auch druckfähig ist. Diese Kombination verlässt die Daten, um kaum unterwegs durch Informationssysteme wie E-Mail modifiziert zu werden, die traditionell nicht saubere 8 Bit waren. Zum Beispiel, der Base64 Durchführungsgebrauch der PANTOMIME - - und - für die ersten 62 Werte. Andere Schwankungen, gewöhnlich abgeleitet aus Base64, teilen dieses Eigentum, aber unterscheiden sich in den für die letzten zwei Werte gewählten Symbolen; ein Beispiel ist UTF-7.

Die frühsten Beispiele dieses Typs der Verschlüsselung wurden für die Verbindungsaufbau-Kommunikation zwischen Systemen geschaffen, die denselben OS — z.B uuencode für UNIX, BinHex für den TRS-80 (später angepasst an den Macintosh) führen — und konnten deshalb mehr Annahmen darüber machen, was Charaktere sicher waren zu verwenden. Zum Beispiel verwendet uuencode Großbuchstaben, Ziffern und viele Zeichensetzungscharaktere, aber kein Kleinbuchstabe da wurde UNIX manchmal mit Terminals verwendet, die verschiedenen Brief-Fall nicht unterstützt haben.

Beispiele

Ein Zitat aus dem Leviathan von Thomas Hobbes:

: Mann ist bemerkenswert, nicht nur durch seinen Grund, aber durch diese einzigartige Leidenschaft von anderen Tieren, die eine Lust der Meinung ist, dass durch ein Durchhaltevermögen des Entzückens an der fortlaufenden und unermüdlichen Generation von Kenntnissen, die kurze Heftigkeit jedes fleischlichen Vergnügens überschreitet.

vertreten weil wird eine Byte-Folge von ausgepolsterten ASCII Charakteren von 8 Bit im Base64 Schema der PANTOMIME wie folgt verschlüsselt:

:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz

:

IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg

:

dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu

:

dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo

:

ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

</Code>

Im obengenannten Zitat ist der verschlüsselte Wert des Mannes TWFu. Verschlüsselt in ASCII wird M, a, n als die Bytes versorgt, die, in 8-Bit-Mengen, in der Basis 2 sind. Diese drei Bytes werden in ein 24-Bit-Pufferproduzieren zusammengetroffen. Sätze von 6 Bit (haben 6 Bit ein Maximum von 64 verschiedenen binären Werten), werden in Zahlen umgewandelt (in diesem Fall, es gibt 4 Zahlen in dieser 24-Bit-Schnur), die dann zu ihren entsprechenden Werten in Base64 umgewandelt werden.

Weil dieses Beispiel, Base64 illustriert, der Bekehrte 3 Oktette in 4 verschlüsselte Charaktere verschlüsselt.

:

Wenn die Zahl von Bytes, um zu verschlüsseln, durch 3 nicht teilbar ist, der ist, gibt es nur ein oder zwei Bytes des Eingangs für den letzten Block, dann wird die folgende Handlung durchgeführt:

Fügen Sie Extrabytes mit der Wertnull hinzu, also gibt es drei Bytes, und führt die Konvertierung zu base64 durch. Wenn es nur ein bedeutendes Eingangsbyte gab, werden nur die ersten zwei base64 Ziffern aufgepickt, und wenn es zwei bedeutende Eingangsbytes gab, werden die ersten drei base64 Ziffern aufgepickt. '' Charaktere könnten hinzugefügt werden, um den letzten Block vier base64 Charaktere enthalten zu lassen.

Infolgedessen:

Wenn die letzte Gruppe ein Oktett enthält, werden die vier am wenigsten bedeutenden Bit des End-6-Bit-Blocks auf die Null gesetzt, und wenn die letzte Gruppe zwei Oktette enthält, werden die zwei am wenigsten bedeutenden Bit des End-6-Bit-Blocks auf die Null gesetzt.

Polstern

Die '' Folge zeigt an, dass die letzte Gruppe nur 1 Byte enthalten hat, und '' anzeigt, dass es 2 Bytes enthalten hat. Das Beispiel illustriert unten, wie, den Eingang vom ganzen stutzend, das obengenannte Zitat das Produktionspolstern ändert:

Eingang endet mit: jeder fleischliche plea'sure. Produktion endet mit: YW55IGNhcm5hbCBwbGVhc3VyZS4=

Eingang endet mit: Jede fleischliche plea'sure Produktion endet mit: YW55IGNhcm5hbCBwbGVhc3VyZQ ==

Eingang endet mit: Jede fleischliche plea'sur Produktion endet mit: YW55IGNhcm5hbCBwbGVhc3Vy

Eingang endet mit: Jede fleischliche plea'su Produktion endet mit: YW55IGNhcm5hbCBwbGVhc3U=

Eingang endet mit: Die Produktion jeder fleischlichen Entschuldigung endet mit: YW55IGNhcm5hbCBwbGVhcw ==

Dieselben Charaktere werden verschieden abhängig von ihrer Position innerhalb der Drei-Oktett-Gruppe verschlüsselt, die verschlüsselt wird, um die vier Charaktere zu erzeugen. Zum Beispiel

Der Eingang: plea'sure. Verschlüsselt zu cGxlYXN1cmUu

Der Eingang: lea'sure. Verschlüsselt zu bGVhc3VyZS4=

Der Eingang: ea'sure. Verschlüsselt zu ZWFzdXJlLg ==

Der Eingang: a'sure. Verschlüsselt zu YXN1cmUu

Der Eingang: sicher. Verschlüsselt zu c3VyZS4=

Die Zahl von Produktionsbytes pro Eingangsbyte ist etwa 4 / 3 (33 % oben) und läuft zu diesem Wert für eine Vielzahl von Bytes zusammen. Mehr spezifisch, in Anbetracht eines Eingangs von n Bytes, wird die Produktion Bytes lange, einschließlich des Polsterns von Charakteren sein.

Aus einem theoretischen Gesichtspunkt ist der Polstern-Charakter nicht erforderlich, da die Zahl von fehlenden Bytes von der Zahl von Base64 Ziffern berechnet werden kann. In einigen Durchführungen ist der Polstern-Charakter obligatorisch, während für andere er nicht verwendet wird. Ein Fall, wo auspolsternde Charaktere erforderlich sind, ist wenn vielfach, verschlüsselte Dateien von Base64 werden verkettet. 2011 DEF-BETRÜGERISCHE Qualifikators der Festnahme Die Fahne (CTF) haben ein Rätsel mit einer Datei von verkettetem Base64 enthalten, hat Dateien verschlüsselt.

Die Entzifferung von Base64 mit dem Polstern

Wenn

man Base64 Text decodiert, werden 4 Charaktere normalerweise zurück zu 3 Charakteren umgewandelt. Die einzigen Ausnahmen sind, wenn auspolsternde Charaktere bestehen. Eine Single '' zeigt an, dass die 4 Charaktere zu nur 2 Bytes decodieren werden, während 2 ''s anzeigt, dass die 4 Charaktere zu einem einzelnen Byte decodieren werden. Dieses Beispiel illustriert:

Verschlüsselter Text endet mit: YW55IGNhcm5hbCBwbGVhcw == 2 '= 's decodiert zu 1 Charakter: der jeder fleischlichen Entschuldigung

Verschlüsselter Text endet mit: YW55IGNhcm5hbCBwbGVhc3U = 1 '=' decodiert zu 2 Charakteren: jeder fleischliche plea'su

Verschlüsselter Text endet mit: YW55IGNhcm5hbCBwbGVhc3Vy 0 '= 's decodiert zu 3 Charakteren: jeder fleischliche plea'sur

Durchführungen und Geschichte

Variante-Zusammenfassungstisch

Durchführungen können einige Einschränkungen auf das Alphabet haben, das verwendet ist, um einige Bit-Muster zu vertreten. Das betrifft namentlich die letzten zwei Charaktere, die im Index-Tisch für den Index 62 und 63 und dem Charakter verwendet sind, der verwendet ist, um auszupolstern (der in einigen Protokollen obligatorisch, oder in anderen entfernt sein kann). Der Tisch fasst unten diese bekannten Varianten und Verbindung zu den Paragraphen unten zusammen.

Gemütlichkeitserhöhte Post

Der erste bekannte standardisierte Gebrauch der Verschlüsselung jetzt genannt die PANTOMIME Base64 war im Protokoll von Privacy-enhanced Electronic Mail (PEM), das durch RFC 989 1987 vorgeschlagen ist. PEM definiert eine "druckfähige Verschlüsselung" Schema, das Base64-Verschlüsselung verwendet, um eine willkürliche Folge von Oktetten zu einem Format umzugestalten, das in kurzen Linien von 6-Bit-Charakteren, wie erforderlich, durch Übertragungsprotokolle wie SMTP ausgedrückt werden kann.

Die jetzige Version von PEM (angegeben RFC 1421) verwendet ein Alphabet-Buchstaben 64, das aus der Groß- und Kleinschreibung - römischen Briefen (-,-), die Ziffern (-), und "" und "" Symbole besteht. Das "" Symbol wird auch als ein spezieller Nachsilbe-Code verwendet. Die ursprüngliche Spezifizierung, RFC 989, hat zusätzlich das "" Symbol verwendet, um verschlüsselte, aber unencrypted Daten innerhalb des Produktionsstroms abzugrenzen.

Um Daten zur PEM druckfähigen Verschlüsselung umzuwandeln, wird das erste Byte in die bedeutendsten acht Bit eines 24-Bit-Puffers, des folgenden in den mittleren acht und des dritten in den am wenigsten bedeutenden acht Bit gelegt. Wenn es weniger als drei Bytes gibt, die verlassen sind zu verschlüsseln (oder insgesamt), werden die restlichen Pufferbit Null sein. Der Puffer wird dann, sechs Bit auf einmal, am bedeutendsten erst als Indizes in die Schnur verwendet: "" Und der angezeigte Charakter ist Produktion.

Der Prozess wird auf den restlichen Daten wiederholt, bis weniger als vier Oktette bleiben. Wenn drei Oktette bleiben, werden sie normalerweise bearbeitet. Wenn weniger als drei Oktette (24 Bit) verschlüsseln müssen, die Eingangsdaten ist mit Nullbit Recht-gepolstert, um ein integriertes Vielfache von sechs Bit zu bilden.

Nach der Verschlüsselung der nichtgepolsterten Daten, wenn zwei Oktette des 24-Bit-Puffers gepolsterte Nullen sind, werden zwei "" Charaktere an der Produktion angehangen; wenn das ein Oktett des 24-Bit-Puffers mit gepolsterten Nullen gefüllt wird, wird ein "" Charakter angehangen. Das gibt dem Decoder Zeichen, dass die Nullbit hinzugefügt wegen des Polsterns von den wieder aufgebauten Daten ausgeschlossen werden sollten. Das versichert auch, dass die verschlüsselte Produktionslänge ein Vielfache von 4 Bytes ist.

PEM verlangt, dass alle verschlüsselten Linien aus genau 64 druckfähigen Charakteren mit Ausnahme von der letzten Linie bestehen, die weniger druckfähige Charaktere enthalten kann. Linien werden durch whitespace Charaktere gemäß der lokalen (mit der Plattform spezifischen) Vereinbarung abgegrenzt.

PANTOMIME

Die PANTOMIME (Mehrzweckinternetposterweiterungen) Spezifizierung verzeichnet Base64 als eines von zwei zum Text binären Verschlüsselungsschemas (der andere - druckfähig angesetzt werden). Die Base64-Verschlüsselung der PANTOMIME basiert auf dieser der RFC 1421-Version von PEM: Es verwendet dasselbe Alphabet-Buchstaben 64 und Verschlüsselungsmechanismus als PEM, und verwendet das "" Symbol für die Produktion, die ebenso, wie beschrieben, in RFC 1521 auspolstert.

PANTOMIME gibt keine feste Länge für Base64-verschlüsselte Linien an, aber sie gibt wirklich eine maximale Linienlänge von 76 Charakteren an. Zusätzlich gibt es an, dass irgendwelche extraalphabetischen Charaktere durch einen entgegenkommenden Decoder ignoriert werden müssen, obwohl die meisten Durchführungen einen CR/LF newline Paar verwenden, um verschlüsselte Linien abzugrenzen.

So ist die wirkliche Länge von mit der PANTOMIME ENTGEGENKOMMENDEN Base64-verschlüsselten binären Daten gewöhnlich ungefähr 137 % der ursprünglichen Datenlänge, obwohl für sehr kurze Nachrichten die Gemeinkosten viel höher wegen der Gemeinkosten der Kopfbälle sein können. Sehr grob ist die Endgröße Base64-verschlüsselter binärer Daten 1.37mal der ursprünglichen Datengröße + 814 Bytes (für Kopfbälle) gleich. Mit anderen Worten kann der Größe der decodierten Daten mit dieser Formel näher gekommen werden:

Bytes = (string_length (encoded_string) - 814) / 1.37

UTF-7

UTF-7, beschrieben zuerst RFC 1642, der später durch RFC 2152 ersetzt wurde, hat ein genanntes System eingeführt hat Base64 modifiziert. Dieser Daten, die Schema verschlüsseln, wird verwendet, um UTF-16 als ASCII Charaktere für den Gebrauch in 7-Bit-Transporten wie SMTP zu verschlüsseln. Es ist eine Variante der in der PANTOMIME verwendeten Base64-Verschlüsselung.

Der "Modifizierte Base64" Alphabet besteht aus der PANTOMIME Base64 Alphabet, aber verwendet das "" Polstern des Charakters nicht. UTF-7 ist für den Gebrauch in Postkopfbällen (definiert RFC 2047) beabsichtigt, und der "" Charakter wird in diesem Zusammenhang als der Flucht-Charakter für "angesetzten - druckfähige" Verschlüsselung vorbestellt. Modifizierter Base64 lässt einfach das Polstern weg und endet sofort nach der letzten Base64 Ziffer, die nützliche Bit enthält, bis zu drei unbenutzte Bit in der letzten Base64 Ziffer verlassend.

OpenPGP

OpenPGP, der in RFC 4880 beschrieben ist, beschreibt Basis 64 Verschlüsselung, auch bekannt als "ASCII Rüstung". Basis 64 ist zur "Base64"-Verschlüsselung identisch, die von der PANTOMIME mit der Hinzufügung einer CRC fakultativen 24-Bit-Kontrollsumme beschrieben ist. Die Kontrollsumme wird auf den Eingangsdaten vor der Verschlüsselung berechnet; die Kontrollsumme wird dann mit demselben Base64 Algorithmus und mit einem zusätzlichen "" Symbol als Separator verschlüsselt, der an den verschlüsselten Produktionsdaten angehangen ist.

RFC 3548

RFC 3548 betitelt ist Der Base16, Base32, und Base64 Daten Encodings, ein (nichtnormativer) Informationsmerkzettel, der versucht, RFC 1421 und RFC 2045 Spezifizierungen von Base64 encodings, alternatives Alphabet encodings, und der selten verwendete Base32 und Base16 encodings zu vereinigen.

RFC 3548 verbietet Durchführungen davon, Nachrichten zu erzeugen, die Charaktere außerhalb des Verschlüsselungsalphabetes oder ohne Polstern enthalten, wenn sie einer Spezifizierung nicht geschrieben werden, die sich auf RFC 3548 bezieht und spezifisch sonst verlangt; es erklärt auch, dass Decoder-Durchführungen Daten zurückweisen müssen, der Charaktere außerhalb des Verschlüsselungsalphabetes enthält, wenn sie einer Spezifizierung nicht geschrieben werden, die sich auf RFC 3548 bezieht und spezifisch sonst verlangt.

RFC 4648

Dieser RFC obsoletes RFC 3548 und konzentriert sich auf Base64/32/16:

: Dieses Dokument beschreibt den allgemein verwendeten Base64, den Base32 und die Base16-Verschlüsselungsschemas. Es bespricht auch den Gebrauch des Linienfutters in verschlüsselten Daten, Gebrauch des Polsterns in verschlüsselten Daten, Gebrauch von Nichtalphabet-Charakteren in verschlüsselten Daten, Gebrauch von verschiedenen Verschlüsselungsalphabeten und kanonischen encodings.

Dateinamen

Eine andere Variante hat modifizierten Base64 nach dem Dateinamengebrauch ''statt'' genannt, weil Unix und Windows-Dateinamen '' nicht enthalten können.

URL-ADRESSE-Anwendungen

Base64 Verschlüsselung kann nützlich sein, wenn ziemlich lange sich identifizierende Information in einer HTTP Umgebung verwendet wird. Zum Beispiel könnte ein Datenbankfortsetzungsfachwerk für javanische Gegenstände Base64-Verschlüsselung verwenden, um einen relativ großen einzigartigen id (allgemein 128-Bit-UUIDs) in eine Schnur für den Gebrauch als ein HTTP Parameter in HTTP-Formen zu verschlüsseln, oder HTTP BEKOMMEN URL-ADRESSEN. Außerdem müssen viele Anwendungen binäre Daten in einem Weg verschlüsseln, der für die Einschließung in URL-ADRESSEN, einschließlich in verborgenen Webform-Feldern günstig ist, und Base64 eine günstige Verschlüsselung ist, um sie in nicht nur ein Kompaktweg, aber in einem relativ unlesbaren zu machen, wenn er versucht, die Natur von Daten von einem zufälligen menschlichen Beobachter zu verdunkeln.

Das Verwenden von normalem Base64 in der URL-ADRESSE verlangt Verschlüsselung'' '', und ''Charaktere in spezielle Prozent-verschlüsselte hexadecimal Folgen ('' ='', '' = '' und ''=''), der die Schnur unnötigerweise länger macht.

Deshalb bestehen modifizierte Base64 für URL-ADRESSE-Varianten, wo '' und '' Charaktere von normalem Base64 beziehungsweise durch ersetzt werden ''und'', so dass das Verwenden der URL-ADRESSE encoders/decoders nicht mehr notwendig ist und keinen Einfluss auf die Länge des verschlüsselten Werts hat, dieselbe verschlüsselte Form intakt für den Gebrauch in Verwandtschaftsdatenbanken, Webformen und Gegenstand-Bezeichnern im Allgemeinen verlassend. Einige Varianten erlauben oder verlangen, dass das Auslassen des Polsterns '' unterzeichnet, sie zu vermeiden, mit Feldseparatoren verwirrte, oder dass jedes solches Prozent zu-verschlüsselnde Polstern zu verlangen.

Programm-Bezeichner

Es gibt andere Varianten, die '' oder '' verwenden, wenn die Base64 verschiedene Schnur innerhalb von gültigen Bezeichnern für Programme verwendet werden muss.

XML

XML Bezeichner und Namenjetons werden mit zwei Varianten verschlüsselt:

  • '' weil der Gebrauch in XML Jetons (Nmtoken), oder sogar nennt
  • '' für den Gebrauch in mehr eingeschränkten XML Bezeichnern (Name).

Regelmäßige Ausdrücke

Eine andere Variante hat modifizierten Base64 nach dem Regexps-Gebrauch '' statt genannt, ''um den normalen Base64 zu ersetzen'', weil sowohl '' als auch '' für regelmäßige Ausdrücke vorbestellt werden kann (bemerken Sie, dass '' verwendet in der IRCu Variante oben in diesem Zusammenhang nicht arbeiten würde).

HTML

Und Methoden von JavaScript, die in der HTML5 Draftspezifizierung definiert sind, stellen Base64 verschlüsselnde und decodierende Funktionalität Webseiten zur Verfügung. Die Methode ist darin ungewöhnlich sie ignoriert whitespace oder neue Linien nicht, stattdessen werfend. Die Methode-Produktionen, die Charaktere auspolstern, aber sind diese im Eingang der Methode fakultativ.

Andere Anwendungen

Base64 kann in einer Vielfalt von Zusammenhängen verwendet werden:

  • Base64 kann verwendet werden, um Text zu übersenden und zu versorgen, der Begrenzungszeichen-Kollision sonst verursachen könnte
  • Base64 wird verwendet, um ein Kennwort-Kuddelmuddel zu versorgen, das mit der Gruft im geschätzt ist
  • Spammers verwenden Base64, um grundlegenden anti-spamming Werkzeugen auszuweichen, die häufig Base64 nicht decodieren und deshalb Schlüsselwörter in verschlüsselten Nachrichten nicht entdecken können.
  • Base64 wird für die PHP Verfinsterung schwer verwendet.
  • Base64 wird verwendet, um Charakter-Schnuren in LDIF Dateien zu verschlüsseln
  • Base64 wird häufig verwendet, um binäre Daten in einer XML Datei mit einer Syntax einzubetten, die z.B favicons in Firefox ähnlich ist.
  • Base64 wird verwendet, um binäre Dateien wie Images innerhalb von Schriften zu verschlüsseln, abhängig von Außendateien zu vermeiden.
  • Die Daten URI Schema können Base64 verwenden, um Dateiinhalt zu vertreten. Zum Beispiel können Hintergrundimages und Schriftarten in einem CSS stylesheet Datei als URIs angegeben werden, anstatt in getrennten Dateien geliefert zu werden.

Basis 64 mit Base64 nicht vereinbare Anwendungen

  • Der GEDCOM 5.5 Standard für den Genealogischen Datenaustausch verwendet ein Base64 ähnliches Konzept, um Multimediadateien in seiner Textlinie hierarchisches Dateiformat zu verschlüsseln. Die Wahl von Extracharakteren ist '' und '' mit einer verschiedenen Anweisung von Charakteren zu den 64 6-Bit-Werten, d. h., - - - für Werte 0-63.
  • Uuencoding verwendet ein System mit der Basis 64 für binäre Daten, aber mit viel verschiedenem Satz von Charakteren in der Verschlüsselung. Es verwendet viele Zeichensetzungscharaktere, aber keine Kleinbuchstaben.
  • BinHex, der für den Mac OS verwendet wurde, hat ein Verschlüsselungssystem mit 64 als Basis, aber mit verschiedenen Charakteren im Vergleich zu Base64. Es verwendet Zeichensetzungscharaktere, Ziffern, Briefe der Groß- und Kleinschreibung, aber verwendet einige visuell confusable Charaktere wie'' '', ',' und '' nicht.

Siehe auch

Links


Liste von ehemaligen USA-Senatoren / Siamesischer Traum
Impressum & Datenschutz