Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

Suche Algorithmus/Ideen zum String-Kodieren...

Mdl / 9 Antworten / Flachansicht Nickles

Suche Algorithmus/Ideen - vorzugsweise in C/C++ (aber nat. keine Vorraussetzung) - zum String-Kodieren...

mit einer wesentlichen Anforderung:

Wenn sich zwei Strings auch nur minimal unterscheiden, sollte die Ausgabe i.d.R. komplett unterschiedlich sein.

Obwohl ich eher eine Unkenntlichmachung, als eine wirksame Verschlüsselung benötige, habe ich, weil gerade greifbar, den DES-Algorithmus auf zwei ähnliche Strings - zwei Dateinamen mit unterschiedl. Extention - angewandt und festgestellt, dass der dafür nicht ideal ist. Grund: DES verschlüsselt in 8-Byte-Blöcken. Sind somit die ersten 8 Zeichen der Dateinamen identisch sind auch die ersten 8 Zeichen der Zielnamen identisch.

Also: Irgendwelche Ideen, Verweise, etc. ?

Vielen Dank,

Mdl

bei Antwort benachrichtigen
Borlander Mdl „Hallo Borlander, ja, sie müsste umkehrbar sein. ...“
Optionen
Der konkrete Zweck war, die Dateinamen einiger Dateien, die ich auf einem FTP-Server speichern wollte auch zu kodieren.

Dann solltest Du beim Einsatz eines beliebigen Verschlüsselungsverfahrens wie z.B. DES noch drüber nachdenken das Ergebnis anschließend noch so nachzubearbeiten, dass nur in Dateinamen erlaubte Zeichen auftreten können. Also kein "*" oder "/", z.B. mit base64url siehe https://de.wikipedia.org/wiki/Base64.

Ideal wäre natürlich ein eindeutiges (und gleichlangem) Ergebnis.

Was meinst Du mit gleichlang? (Ausgabelänge = Eingabelänge?)

Sofern Du kein Verfahren hast mit einer Blocklänge die exakt der Eingabelänge entspricht wirst Du ein bisschen zusätzlichen Platz mit einplanen müssen. Gebräuchlicher als mein spontaner Vorschlag wäre die Verwendung eines Salt um für jeder Datei einen anderen Schlüssel zu versehen. Diesen Salt als Ergänzung des geheinem Schlüssels müsste man dann allerdings auch mit im Dateinamen ablegen. Hätte dann also erst mal ein Prefix im Dateinamen für den Salt.

die zwei identische Ausgangsstrings

Was meinst Du mit zwei Ausgangsstrings?

base64url

bei Antwort benachrichtigen