Wenn man Daten hin und her schicken will, muss man sich Gedanken machen, dass böse Menschen nichts Böses tun und die Daten auch heile ankommen ohne anzuecken.
Verschlüsseln ist da eine naheliegende Idee. So sollte man auch GPS Koordinaten so über eine URL transportieren können, dass nicht jeder Honk daran herummanipulieren kann.
Eigentlich müsste ich hier jetzt auch schon wieder die Meckerbox auspacken. Es ist jetzt ein paar Jahre her, dass ich mich zuletzt mit Verschlüsselung in Python beschäftigt habe da hatte Python eine Versionsnummer, wohl noch mi einer 2 vor dem Komma. Heute sind wir bei 3.12. Damals war das ganz gut gelöst und man bekam recht schnell vernünftige Verschlüsselungen wie DES oder auch AES256 hin. ich war mir nicht mehr ganz sicher wie das Modul damals hieß - und dann musste ich feststellen : pycrypto wird gar nicht mehr weiterentwickelt..
Ich habe dann notgedrungen etwas neues kennengelernt. Das Modul hört auf cryptography und verschlüsselt mal recht niederschwellig in der Bedienung. ist für mich aber noch recht "Blackbox".
Was Fernet da hinsichtlich Verschlüsselung genau ausspuckt weiß ich nicht genau. Bis heute hätte ich gesagt, das ist ein Kräuterschnaps. Aber unter der Prämisse "Vertrau mir Bruder" läuft es ganz gut...
Erklärung: Eigentlich ist die Anwendung des moduls sehr simpel. Zwei, drei Anmerkungen mache ich mal. Ich habe da eine Funktion gebaut, die so einfach wie möglich eine Zeichenkette verschlüsselt. Für den Hausgebrauch habe ich sogar den Schlüssel im Code platziert. Das ist zwar einigermaßen gaga, abe ich habe ja auch nur vor Leute von außen das Leben schwer zu machen. Wie sieht man später....
Also zu den weißen Pfeilen:
1.) Der Kräuterschnaps erwartet als Nachricht zum verschlüsseln Bytecode ich will aber eine "normale" Zeichenkette übergeben , daher hier eine Umwandlung.
2.) Die ganze base64 umwandlung dient ebenfalls dazu, dass man als Antwort eine reine UTF-8 Zeichenkette bekommt. Zusätzlich werden die dösigen"==" am ende noch nerven... Schließlich will ich es an eine url anhängen.
3.) Zeigt schon das Ergebnis, diese Zeichenkette beginnend mit Z0FBQUFBQm1zNkJ5d.... Wenn man bedenkt was die Nachricht war, stolze 219 Zeichen lang. Das sollte aber kein Problem werden, wenn ich mich nicht irre, verdaut ein http-Request eine Gesamtlänge von 2048 Zeichen... theoretisch.. hoffentlich...😜
..und wieder retour..
Bei der Entschlüsselung läuft alles in die Andere Richtung - st ja auch eine symmetrische Verschlüsslung🥴
1.) Hier werden die "=" wieder ergänzt, die wir am Ende beim Verschlüsseln abgeschnitten haben. Es weden so viele eingefügt bis die Länge der Zeichenkette wieder eine Vielzahl von 4 ist.
2.) Hier passiert die eigentliche Arbeit - so wie beim Verschlüsseln, nur in die entgegengesetzte Richtung. Außerdem kann man sich zu Nutze machen, dass eine manipulierte Nachricht in den Modulen schon Fehler auslösen, was hier in den exept Zweig führt.
3.) Am Ende stehen da wieder Koordinaten und der Zeitcode.