Buchstaben gleichzeitig ersetzen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Buchstaben gleichzeitig ersetzen

Beitrag von P7BB »

Hallo,

ich suche eine Funktion, um Buchstaben in PHP gleichzeitg zu ersetzen. Damit meine ich nicht preg_replac oder str_replace.
Als Beispiel:
Wenn ich den String "abc" habe und nun aus "a" ein "b" mach eund aus "b" ein "c", dann würde das so aussehen:
abc -> bbc -> ccc

Ich möchte aber "bcc" als ergebnis haben. Deshalb dürfen Buchstaben, die eine "Ersetzung" sind nicht ein weiteres mal ersetzt werden. Mit welcher Funktion kann ich das anstellen, bzw. gibt es andere Möglichkeiten dafür? Es geht nicht, dass ich ERST "b" durch "c" ersetze und DANN "a" durch "b", da letztendlich auch "c" durch "a" ersetzt wird. Also prinzipiel wie die Cäsar-Verschlüsslung... ;)

Danke im Vorraus
- P7BB

Edit:
Ich benötige keine Cäsar-Verschlüsslung, wie sie beispielsweise hiermit erstellt werden könnte:
http://go.raidrush.ws/?http://de2.php.net/str_rot13

Ich brauche das ganze für eine andere Verschlüsslung, die ich momentan entwickel, aber die Problematik bleibt diesselbe. ;)
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: Buchstaben gleichzeitig ersetzen

Beitrag von 4seven »

du müsstest alle strings cachen und dann geordnet verschlüsseln. dabei müsste bis zum abschluß der verschlüsselung das abbild des originalstrings "im raum" stehen bleiben, so das es sauber zeilenweise verschlüsselt werden kann. dann das ganz flushen. umgekehrt gehts dann mit der entschlüsselung. nicht ganz unmöglich, aber ne ziemlich hakelige sache.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Buchstaben gleichzeitig ersetzen

Beitrag von Pyramide »

Warum einfach, wenn es auch kompliziert geht? Ich würde den String einfach Zeichen für Zeichen durchlaufen und diese dann mit einem switch-Block "bearbeiten":

Code: Alles auswählen

$string = 'Hallo Welt abc';
for($i=0; $i<strlen($string); $i++) {
    switch($string[$i]) {
        case 'a': $string[$i] = 'b'; break;
        case 'b': $string[$i] = 'c'; break;
        case 'c': $string[$i] = 'a'; break;
    }
} 
Siehe http://de.php.net/manual/de/language.ty ... ing.substr
KB:knigge
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Buchstaben gleichzeitig ersetzen

Beitrag von P7BB »

Pyramide hat geschrieben:Warum einfach, wenn es auch kompliziert geht? Ich würde den String einfach Zeichen für Zeichen durchlaufen und diese dann mit einem switch-Block "bearbeiten":

Code: Alles auswählen

$string = 'Hallo Welt abc';
for($i=0; $i<strlen($string); $i++) {
    switch($string[$i]) {
        case 'a': $string[$i] = 'b'; break;
        case 'b': $string[$i] = 'c'; break;
        case 'c': $string[$i] = 'a'; break;
    }
} 
Siehe http://de.php.net/manual/de/language.ty ... ing.substr
Danke, auf die gleiche Lösung bin ich vorhin auch gekommen, aber hatte das mit dem switch nicht gewusst, weshalb ich ein etwas seltsammes (und nicht funktionierendes) script an der stelle benutzt habe ;)
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: Buchstaben gleichzeitig ersetzen

Beitrag von 4seven »

Warum einfach, wenn es auch kompliziert geht
genauso meinte ich das, top..
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Buchstaben gleichzeitig ersetzen

Beitrag von P7BB »

Oh, gut, dass pyramide nochmal seine Methode geschrieben hat, sonst wär ich ehrlich gesagt etwas verzweifelt gewesen, denn deine Methode hörte sich danach an, den kompletten orignalen string zu speichern, statt ihn einfach in ein array aufzuteilen... ;)
Achja: Letztendlich kann man meinen Code nicht mehr entschlüsseln... weder manuell, noch automatisch, noch sonst irgendwie. Praktisch eine Art "neuer" md5-algorythmus ;) :D und es werden nicht einfach buchstaben durch andere ersetzt, sondern die situation ist diesselbe gewesen und ich dachte mir, es ist einfacher das ganze so zu beschreiben, wie ich es getan hab ;)
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: Buchstaben gleichzeitig ersetzen

Beitrag von 4seven »

war mir im augenblick selber schwer, das zu umschreiben, da nicht ganz alltäglich. die entschlüsselung wäre ohne genau string- und positions-speicherung in einer temporären tabelle wohl tatsächlich unmöglich. und die tabelle würde wiederum die verschlüsselng ad absurdum führen, außer beide genannten informationen würde in so etwas wie eine privat-key geschrieben werden, der sich dann downloadet und den temporären datenbankeintrag löscht. irgendwie sowas.
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Buchstaben gleichzeitig ersetzen

Beitrag von P7BB »

Naja, das Problem beim entschlüsseln ensteht erst in weiteren Schritten. Theoretisch wäre das möglich, das mit hohem aufwand möglich, zu entschlüsseln, aber ich denke, selbst bei hohem aufwand kommt nichts sinnvolles bei raus, was einem weiterhilft und 2. werde ich diesen algorythmus nicht weitergeben, da er ja meine eigene Homepage sichern soll, die kommerziell ist und somit wäre eine entschlüsslung des admin-passworts extrem schlimm ;)

Das Beispiel, so wie es aber bis jetzt hier bekannt ist, wäre ohne Probleme entschlüsselbar. Sogar im Kopf, ohne php ;)
denn:
abcdefghijklmnopqrstuvwxyz hallo
bcdefghijklmnopqrstuvwxyza ibmmp
So kann man einfach ablesen, was dort steht ;)
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Buchstaben gleichzeitig ersetzen

Beitrag von gn#36 »

Falls du dieses Verfahren für Verschlüsselung einsetzen willst würde ich da an deiner Stelle aber noch mal drüber nachdenken. Die einfache Buchstabenersetzung ist eines der am leichtesten zu knackenden Verschlüsselungsverfahren. Das Verfahren tut ja überhaupt nichts gegen Häufigkeitsanalysen oder ähnliches, wenn bisher beispielsweise das e der häufigste Buchstabe war, dann wird das mit seiner Ersetzung hinterher ebenso sein. Dann muss letztlich nur noch die Menge an verschlüsselten Daten groß genug sein um dein Verfahren angreifbar zu machen (wenn du natürlich lediglich ein einziges Passwort verschlüsselst das noch dazu aus einer ganzen Menge zufälligen Zeichen besteht die alle durch andere ersetzt werden dann dürfte das noch einigermaßen sicher sein da dann Häufigkeitsanalysen und ähnliche Angriffe nicht funktionieren dürften, sobald du aber noch weitere Dinge damit verschlüsseln willst würde ich an deiner Stelle lieber was anderes machen).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Buchstaben gleichzeitig ersetzen

Beitrag von P7BB »

gn#36 hat geschrieben:Falls du dieses Verfahren für Verschlüsselung einsetzen willst würde ich da an deiner Stelle aber noch mal drüber nachdenken. Die einfache Buchstabenersetzung ist eines der am leichtesten zu knackenden Verschlüsselungsverfahren. Das Verfahren tut ja überhaupt nichts gegen Häufigkeitsanalysen oder ähnliches, wenn bisher beispielsweise das e der häufigste Buchstabe war, dann wird das mit seiner Ersetzung hinterher ebenso sein. Dann muss letztlich nur noch die Menge an verschlüsselten Daten groß genug sein um dein Verfahren angreifbar zu machen (wenn du natürlich lediglich ein einziges Passwort verschlüsselst das noch dazu aus einer ganzen Menge zufälligen Zeichen besteht die alle durch andere ersetzt werden dann dürfte das noch einigermaßen sicher sein da dann Häufigkeitsanalysen und ähnliche Angriffe nicht funktionieren dürften, sobald du aber noch weitere Dinge damit verschlüsseln willst würde ich an deiner Stelle lieber was anderes machen).
Nein, das hab ich nicht vor. ;) Sagte ich aber auch schon, glaub ich... ;)

Nur für diese Verschlüsselungen muss ich Buchstaben allgemein durch etwas anderes ersetzten, aber ich möchte das Verfahren nicht weiter erleutern, ok? ;)

- P7BB
Antworten

Zurück zu „Coding & Technik“