Array durchlaufen und vorne wieder anfangen
comunicout
- php
0 Odium0 Sven Rautenberg0 ovenfreshbread0 Sven Rautenberg0 RobiC
hi leute,
ich bastle gerade an einem privaten verschlüsselungs-tool. ein gegebener text soll verschlüsselt werden. eine der verschlüsselungen beruht auf einer einfachen buchstaben-verschiebung. das heisst, man legt einen faktor fest, um den der jeweilge buchstabe im alphabet verrutscht wird. dazu habe ich ein array mit allen buchstaben, sonderzeichen und zahlen angelegt. nun prüfe ich jeden buchstaben des textes auf seine position im alphabet-array und gehe um faktor n im array nach vorne. alles wunderbar. doch finde ich, dass mein code irgendwie ein bißchen zu laaang ist. eine sache würde mir sehr weiterhelfen, und zwar: hat einer von euch einen algorithmus, um einen array zu durchlaufen und am ende dann wieder vorne anzufangen ?
oder besser: gibt es in PHP eine funktion, die genau dieses macht ?
mfg
christopher
Hallo,
in etwa so:
do while Bedingung
{
for start to arraylänge
tue was
}
}
Odium
Moin!
ich bastle gerade an einem privaten verschlüsselungs-tool. ein gegebener text soll verschlüsselt werden. eine der verschlüsselungen beruht auf einer einfachen buchstaben-verschiebung. das heisst, man legt einen faktor fest, um den der jeweilge buchstabe im alphabet verrutscht wird.
Ich hoffe, du experimentierst damit nur aus Spaß an der Freude, denn es ist bestenfalls eine _Codierung_, aber keinesfalls eine _Verschlüsselung_. Sprich: Das Resultat ist mit Leichtigkeit zu decodieren, es bietet keine Sicherheit. Es ist allenfalls für Seiten wie "http://www.try2hack.nl/ interessant einzusetzen.
dazu habe ich ein array mit allen buchstaben, sonderzeichen und zahlen angelegt. nun prüfe ich jeden buchstaben des textes auf seine position im alphabet-array und gehe um faktor n im array nach vorne. alles wunderbar. doch finde ich, dass mein code irgendwie ein bißchen zu laaang ist.
Wenn wir deinen Code nicht kennen, können wir diese Ansicht nicht kommentieren.
- Sven Rautenberg
Hallo Christopher,
Wenn ich dich richtig verstehe müsstest du nur auf die Position einfach nur Modulo mit der Länge des Array anwenden, dann wird immer wieder von Vorne angefangen, wenn die Länge überschritten wird.
Außerdem musst du die Zeichen nicht in ein Array schreiben, ein String müsste auch reichen, und du kannst die Position so auch auslesen.
So long
oFb
Moin!
oder besser: gibt es in PHP eine funktion, die genau dieses macht ?
Genau dazu fällt mir spontan eine Funktion ein, die alles macht, was du mühsam einzeln versuchst: strtr().
Siehe auch http://www.php.net/strtr
Anwendungsschablone:
$codierter_string = strtr($uncodierter_string,"ABCDEF","EFABCD");
Alle umzuändernden Buchstaben müssen im ersten String stehen, der zweite String enhält diese Buchstaben alle wieder, nur an einer anderen Stelle.
Wenn du den ersten String vorher definierst und den zweiten String aufgrund der Transformationsweite aus dem ersten erstellst (indem du den ersten String an einer Position zerhackst und neu zusammensetzt), dann ist das Verfahren ziemlich leicht machbar. Und eben genauso leicht knackbar.
- Sven Rautenberg
oder besser: gibt es in PHP eine funktion, die genau dieses macht ?
http://www.php.net/manual/de/function.reset.php