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 „Ist klar. Danke für den Link. Ich könnte meine ...“
Optionen
Sei M eine Menge aus 'gültigen' Zeichen, S(M) (StringMenge) die Menge aller Strings, die aus M erstellt werden können

Dafür gibt es übrigens auch schon einen Begriff: https://de.wikipedia.org/wiki/Alphabet_%28Kryptographie%29 und formale Definitionen https://de.wikipedia.org/wiki/Alphabet_%28Informatik%29 + https://de.wikipedia.org/wiki/Kleenesche_und_positive_H%C3%BClle ;-)

scrample(s) \in SM für alle s \in S(M)

Initutiv würde ich hier bei Alphabeten deren Symbolanzahl keine Zweiterpotenz ist Probleme sehen diese Anforderung zu erfüllen, zumindest bei den aktuell gängigen, sicheren und gut erforschten Kryptoverfahren. Mit ROT13 oder ähnlichem würde das aber natürlich gehen…

(Sorry, konnte nicht widerstehen...) 

Eine Definition mit Levenshtein-Distanz hätte dem ganzen aber vielleicht noch den letzten Schliff gegeben ;-)

Man beachte, dass es sich bei dem von mir gesuchtem Alg. eigentlich mehr um eine Umarrangierung bzw. einfache Kodierung handelt.

Du suchst also was in Richtung Transposition bzw. Permutation? Wobei Du nicht nur irgendeine suchst, sondern eine für beliebige Input-Längen. Beim Einsatz von Verschlüsselungsverfahren mit fester Blocklänge müsstest Du zusätzlich dann noch die Forderung stellen, dass bei ähnlichen Strings möglichst wenige identische Blöcke auftreten. Wenn sich die Eingabe allerdings nur in einem Bit unterscheidet (z.B. Ziffer 1 statt 0 im Dateinamen) dann werden nach reine Permuatiotion am Ende alle Blöcke außer einem identisch bleiben.

Gruß
Borlander

bei Antwort benachrichtigen