Raktenfüllfix: Verschlüsselung

Beitrag lesen

Das, was am Ende zwischen = und " stehen kann, ist mir nicht klar.

Nun, wie klawischnigg schon schrieb, da kann wirklich alles mögliche stehen. Aber:

"do+uVdp2bl9fwqXhfKGXBA==" ist wohl eine base64-codierte Repräsentation eines “Blob“. Ein Blob ist sowas wie eine Folge von Bytes, die aber teilweise in Text nicht vorkommen dürfen und von Textbetrachtern und Editoren unterschiedlich behandelt (ignoriert oder ersetzt) werden. Ein gezippte Daten oder ein kompiliertes Programm wäre ein Beispiel.

Damit man diese Blobs als Texte transportieren und notieren kann werden diese kodiert (sozusagen umgerechnet) und zwar auf eine Gruppe von 64 Zeichen (A-Z, a-z, 0-9, +/). Das nennt sich base64encode. Die „Rückrechnung“ ist eindeutig.

Vergleichbar ist das mit dem Umrechnen von Zahlen zwischen Zahlen Systemen: So ist Repräsentation einer dezimal notierten 9 binär 1001, oktal 81.

Beim Versachlüsseln entsteht also eigentlich ein Blob, der dann base64-kodiert präsentiert wird. Dem werden zur Erkennung die beiden "==" angehangen. Oft werden überlange Zeilen außerdem noch umgebrochen. Manchmal steht da noch eine Prüfsumme am Ende - nach den beiden "==" (Radix)

Vor dem Entschlüsseln ist also auch ein „Ausradieren“ der Zeilenumbrüche und dann base64-decode fällig. Offenbar gibt es hier ein Problem: nämlich das am Ende des base64-Codes ein (eventuell!) nicht druckbares Zeichen steht. Es kann auch nicht gesehener Zeilenumbruch sein.

Unter Linux würde ich also einfach versuchen, die in Base64 kodierten Daten vor der Weiterverarbeitung mit etwas wie tr -d '[:cntrl:]' von Steuerzeichen (z.B. Zeilenumbrüchen) zu befreien.

echo -e "Hallo\nWelt" | tr -d '[[:cntrl:]]'

gibt dann "HalloWelt" aus. Das ist nicht perfekt, sollte aber genügen.

Ach so: Wo das Problem entsteht weiß ich nicht. Jedenfalls hast Du nach dem Verschlüsseln und Base64-kodieren (oft ein Schritt, genau wie umgekehrt) etwas, was Du beim Entschlüsseln nicht willst bzw. was Dein Programm nicht versteht. Also untersuche, ob das Steuerzeichen durch irgendetwas in Deinem Skripten bzw. Befehlen in den String gelangt.

Oder „putze“ den String wie gezeigt mit etwas wie tr. oder halt dem was Deine Programmier/Skriptsprache dafür mitbringt