Theorie
 
 
 
 
 
Computertechnik
 
 
 
 
 
.. Stichwort: Base 64
 
 
 
 
 

 
 
 
 

 

Die Base64-Wandlung ist ein einfaches und umkehrbares Kodierungsverfahren, mit dem 8Bit-Zeichen auf 6Bit reduziert werden können. Dadurch ist es möglich, Daten durch Netzwerke zu schleusen, die keine 8Bit-Daten ohne Informationsverlust übertragen können. Da die Mime- oder Base64 Kodierung auch häufig zur verdeckten Übertragung von Benutzername und Kennwort angewendet wird, hier ein kurzer Überblick.

Das Verfahren funktioniert wie folgt ..
Drei aufeinander folgende Bytes eines Zeichenstroms bestehen aus insgesamt 24 Bits. Dieser 24 Bit-Block wird bei der Base64-Kodierung in 4 Blöcke zu je 6 Bits eingeteilt und umcodiert. Da diese 6Bit Worte bei den meisten Computern normalerweise in Bytes (mit 8Bit Länge) abgelegt werden müssen, werden die zwei höchsten Bits des Bytes auf 0 gesetzt. Innerhalb des Computers werden aus drei Bytes eines Zeichenstroms also 4 Bytes, bei denen jeweils die beiden höchsten Bits auf 0 gesetzt sind.
Bei einer Wortlänge von 6 Bits ergeben sich 26, also insgesamt 64 unterschiedliche Codezahlen im Bereich 0 bis 63 oder (0h-3Fh).
Diesen Codezahlen werden ausgesuchten Zeichen aus dem ASCII-Zeichensatz zugeordnet. Dabei werden keine Steuerzeichen benutzt und Zeichen, die auf dem Weg durch ein Netzwerk von Vermittlungsrechnern missverstanden werden könnten, entfallen ebenfalls.

Typischerweise sind den Base64 Codezahlen folgende ASCII-Zeichen zugeordnet ..

 

0

A

10

Q

20

g

30

w

1

B

11

R

21

h

31

x

2

C

12

S

22

i

32

y

3

D

13

T

23

j

33

z

4

E

14

U

24

k

34

0

5

F

15

V

25

l

35

1

6

G

16

W

26

m

36

2

7

H

17

X

27

n

37

3

8

I

18

Y

28

o

38

4

9

J

19

Z

29

p

39

5

A

K

1A

a

2A

q

3A

6

B

L

1B

b

2B

r

3B

7

C

M

1C

c

2C

s

3C

8

D

N

1D

d

2D

t

3D

9

E

O

1E

e

2E

u

3E

+

F

P

1F

f

2F

v

3F

/

 
 
 
 
Ist die Anzahl der zu kodierenden Zeichen nicht durch 3 teilbar, muss der letzte Block, zu je vier mal 6Bit, aufgefüllt werden, da immer 24Bit Blöcke entstehen sollen.
Der Auffüllmechanismus bestimmt folgendes. Ein bereits angefangenes 6Bit Wort wird mit zwei bzw. vier weiteren Nullen aufgefüllt. Die bis zu drei total freien 6Bit-Worte werden mit dem ASCII-Code des Zeichens '=' (3Dh) gefüllt. Diese Auffüllung bezeichnet man als Padding.
Ein Base64-Text könnte theoretisch aus beliebig vielen Zeichen bestehen. Man hat sich jedoch auf eine maximale Länge von 76 Zeichen geeinigt. Dann sollte eine Blocktrennung erfolgen. Günstig ist es die Blöcke alle gleich lang zu halten, was bei den Empfängern die Möglichkeit eröffnet, auf Probleme mit der Zeilenumschaltfolge \r\n bzw \r oder \n zu durch Zählung der hereinkommenden Zeichen zu reagieren.
 
 
 
 
 
Base64 Umkehrung
Kehrt man den obigen Algorithmus um, entsteht aus dem unleserlich erscheinenden Base64-Text wieder ein lesbarer Klartext. Dementsprechend eignet sich die Base64 Kodierung nicht zur Verschlüsselung von 'geheimem' Text. Man spricht von einer verdeckten Datenübertragung und in der Tat ist ein wenig Aufwand notwendig, will man den Base64-Text wieder in lesbaren Text wandeln. Ein Problem ist es indes nicht, wenn man den Wandlungsablauf kennt.
 
 
 
 
 
Klartext in BASE64 -Wandler
Einen Eindruck von Base 64 vermittelt der Klartext in Base64-Wandler der auf einer Javascrip-Funktion beruht. Er wandelt einen eingegebenen Klartext in Base64-Text um.
 

 

Klartext-Eingabe:

Base64-Ausgabe:


 

 

 

 

 

Programm
Ein C-Programm mit Quelltext, zur Wandlung von Klartext nach Base64 und zurück, ist bei den Übungen zu den IPC@CHIP embedded Webservern zu finden.

 

 

 

 

www..de