Heim  >  Artikel  >  Java  >  JAVA-Implementierung von base64_encode und base64_decode

JAVA-Implementierung von base64_encode und base64_decode

高洛峰
高洛峰Original
2017-01-05 17:08:282252Durchsuche

Base64 ist eine der gebräuchlichsten Kodierungsmethoden für die Übertragung von 8-Bit-Byte-Code im Internet. Sie können RFC2045~RFC2049 überprüfen, das detaillierte Spezifikationen für MIME enthält. Base64 erfordert die Konvertierung aller drei 8-Bit-Bytes in vier 6-Bit-Bytes (3 * 8 = 4 * 6 = 24) und das anschließende Hinzufügen von zwei High-Bit-0s zum 6-Bit, um vier 8-Bit-Bytes zu bilden. Das heißt, die konvertierte Zeichenfolge wird theoretisch sein 1/3 länger als das Original

PHP-Funktionen: base64_encode() und base64_decode()

Base64-Codierungs- und Decodierungsprinzip

Base64-Codierung konvertiert tatsächlich 3 8-Bit-Bytes in 4 6-Bit-Bytes, (3*8 = 4*6 = 24) Diese 4 6-Bit-Bytes sind eigentlich immer noch 8 Bits, aber zwei höhere Bits sind auf 0 gesetzt. Wenn nur 6 Bits eines Bytes gültig sind, ist es Der Werteraum beträgt 0 bis 2 hoch 6 minus 1, was 63 entspricht, dh der Werteraum jeder Codierung der konvertierten Base64-Codierung beträgt (0 ~ 63).

Tatsächlich gibt es viele unsichtbare Zeichen in ASCII-Codes zwischen 0 und 63, daher sollte eine andere Zuordnung durchgeführt werden. Die Zuordnungstabelle ist

'A' ~ 'Z' ? ~ 25)

'a' ~ 'z' ? ' ? ASCII (62)

'/' ? ASCII (63)

Auf diese Weise können 3 8-Bit-Bytes in 4 sichtbare Zeichen umgewandelt werden.

Die spezifische Byte-Aufteilungsmethode ist: (Bild (die Zeichnung ist nicht gut, verstehe den Geist :-))

aaaaaabb ccccdddd eeffffff //abcdef ist eigentlich 1 oder 0, der Sache halber der Anzeige Wenn es klar ist, verwenden Sie stattdessen abcdef

~~~~~~~~ ~~~~~~~~ ~~~~~~~~

Byte 1 Byte 2 Byte 3

  ||. Beide Bits sind 0.

Bei dieser Aufteilung sollte die Anzahl der Bytes im Originaltext ein Vielfaches von 3 sein. Wenn diese Bedingung nicht erfüllt werden kann, verwenden Sie zum Ausgleich ausschließlich Null-Bytes

. Verwenden Sie stattdessen das =-Zeichen für die Base64-Kodierung. Aus diesem Grund enden einige Base64-Kodierungen mit einem oder zwei Gleichheitszeichen

, aber es gibt höchstens zwei Gleichheitszeichen, denn: wenn F(origin) das darstellt Anzahl der Bytes des Originaltextes, F(rest) stellt

dar, um den Rest darzustellen, dann wird

F(remain) = F(origin) MOD 3 erstellt.

Die möglichen Werte von F(rest) sind also 0,1,2

Wenn n = [F(ursprung) – F(rest)] / 3

Wenn F(remain) = 0, wird es in die Base64-Kodierung von 4*n Bytes konvertiert.

Wenn F(remain) = 1, da ein ursprüngliches Textbyte in zwei Base64-codierte Bytes aufgeteilt werden kann, um

die Base64-Codierung ein Vielfaches von 4 zu sein, so ist es sollte 2 Gleichheitszeichen hinzufügen.

Wenn F(remain) = 2 ist, sollte

ebenfalls mit einem Gleichheitszeichen gefüllt werden, da die beiden ursprünglichen Textbytes in drei Base64-codierte Bytes aufgeteilt werden können.

Am Ende der Base64-codierten Zeichenfolge stehen 0 bis 2 Gleichheitszeichen. Diese Gleichheitszeichen sind für die Dekodierung nicht erforderlich und können daher gelöscht werden.
In den Netzwerk-GET- und POST-Parameterlisten kann „+“ nicht normal übertragen werden, Sie können es durch „|“ ersetzen.
Auf diese Weise enthält die Base64-codierte Zeichenfolge nur „|“ , also Der auf diese Weise verarbeitete base64-kodierte String kann als Parameterwert in der Parameterliste

====================== übertragen werden ====== ========================================== ===
Das Folgende ist eine von einem Ausländer geschriebene Implementierung:
package com.meterware.httpunit





Weitere Artikel zu JAVA Implementierung von base64_encode und base64_decode, bitte achten Sie auf PHP Chinese Net!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn