29.05.2024
Um eine Benutzer-Id und ein Passwort in einen Base64 String zu wandeln, kann man das Linux-Tool base64 verwenden.
Viele Anleitungen schlagen folgendes vor
$ echo "user:password" | base64
dXNlcjpwYXNzd29yZAo=
Aber vorsichtig, darin liegt ein Pferdefuß. Das echo Kommando ergänzt einen Zeilenumbruch, der mit in das Ergebnis kodiert wird.
Die Rückwandlung sieht trügerisch gut aus:
$ echo "dXNlcjpwYXNzd29yZAo=" | base64 -d
user:password
Aber wenn man genauer hinsieht, ist ein Umbruch zu viel:
$ echo "dXNlcjpwYXNzd29yZAo=" | base64 -d | hexdump -C
00000000 75 73 65 72 3a 70 61 73 73 77 6f 72 64 0a |user:password.|
0000000e
So muss es korrekt gemacht werden:
$ echo -n "user:password" | base64
dXNlcjpwYXNzd29yZA==
Wandelt man das zurück, sieht man deutlich, dass kein Zeilenbruch am Ende enthalten ist:
$ echo "dXNlcjpwYXNzd29yZA==" | base64 -d
user:password$
Der Bash Prompt muss unmittelbar hinter der Ausgabe erscheinen, nur so ist es korrekt!