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 „Suche Algorithmus/Ideen zum String-Kodieren...“
Optionen

Brauchst Du auch eine Umkehrfunktion um den Ergebnisstring wieder in den ursprünglichen umzuwandeln?

Ansonsten könntest Du Dir (kryptographische) Hashfunktionen mit MD5 oder das noch sicherere  und längere noch SHA1 anschauen. Diese haben zudem die Eigenschaft, dass sie ein Ergebnis mit konstanter Länge zurückliefern unabhängig von der Eingabelänge.

Das Phänomen, dass Du beobachtet hast ist unter https://de.wikipedia.org/wiki/Electronic_Code_Book_Mode noch mal recht anschaulich beschrieben. Um es kurz zu machen: Bei Verfahren mit Blocklängen unterhalb der maximalen Stringlänge schaut es schlecht aus mit ECB.

Was mir spontan noch so als Idee kommt: Du könntest jeweils Teilstrings unterhalb der Blocklänge mit Zufallsdaten aufüllen (Also z.B. 6 Zeichen + 2 zufällige Bytes). Damit wäre die Encodierung allerdings nicht mehr eindeutig, Decodierung jedoch noch zweifelsfei möglich durch Verwerfen der Zufallsdaten. Also nur bedingt Alltagstauglich.

Was ist denn das übergeordnete Ziel des Ganzen?

Gruß
Borlander

bei Antwort benachrichtigen