Ich baue ein With-Source-System auf, das ich an das Netz zur Bereitstellung annahmefähiger virtueller Haustiere ausliege. Das System wird hauptsächlich von Kindern betrieben. Da ich möchte, dass es für absolute Anfänger-Programmierer verwendet werden kann, gibt es einige Komplexitätseinschränkungen für mein System: Es kann keine Bibliotheken verwenden, die normalerweise nicht mit PHP ausgeliefert werden, und es kann keine Datenbank berühren oder in einen anderen permanenten Speicher schreiben .
Wenn jedes Tier adoptiert wird, erhält der Besucher zufällig eine aus einer Reihe von leicht unterschiedlichen Varianten dieses Tieres. Die Variationen sehen zunächst gleich aus, wachsen aber im Laufe der Zeit zu anderen Haustieren auf. Der Besucher erhält einen kurzen Code in HTML, der auf das Bild seines Haustiers verweist. Da auf der Serverseite kein permanenter Speicher verfügbar ist, muss der Image-Link des Benutzers alle Informationen enthalten, um zu ermitteln, welche Pet-Variante er erhalten hat.
Im Moment enthält die URL nur die ID des Haustiers und die ID der Variation, die der Benutzer erhalten hat. Das Problem dabei ist, dass die Benutzer durch den Vergleich der Codes herausfinden können, wer unter ihnen mit der gleichen Variation endete. Da einige Variationen seltener sind als andere, können Benutzer die seltenen Variationen leicht erkennen, bevor der Unterschied sogar visuell offensichtlich ist.
Was ich möchte, ist ein Verschlüsselungssystem für die Details in der URL. Etwas, das die Variations-ID verdeckt, sodass jeder Benutzer eine andere URL mit hoher Wahrscheinlichkeit erhält. Ich dachte daran, die Variations-ID (3 oder 4 Bits) als niedrige oder hohe Bits einer großen Zufallszahl zu verwenden, aber die Benutzer werden das Muster darin erkennen. Idealerweise würde das Verschlüsselungssystem so parametriert werden, dass jede Installation meines Systems eine etwas andere Verschlüsselung verwendet.
PHPs Mcrypt-Bibliothek würde wahrscheinlich etwas Nützliches dabei haben, aber unter Hostern scheint es nicht sehr üblich zu sein.
Gibt es eine einfache, parametrisierte Verschleierung / Verschlüsselung, die ich hier benutzen kann?
Wenn Sie ein relativ niedriges Entwicklungsniveau erwarten, können Sie eine sehr einfache "xor" -Verschlüsselung durchführen und den Schlüssel als Teil der URL "speichern". Dann können Sie einfach php's rand () oder / dev / random oder was auch immer verwenden, um Schlüssel zu erzeugen.
Geringentwickelte Benutzer werden nicht ohne weiteres herausfinden, dass sie nur die untere Hälfte ihrer Haustier-ID mit der oberen Hälfte erreichen müssen, um einen Wert zu erhalten, der mit ihren Freunden verglichen werden kann. Ich schätze, die meisten Leute, die das erkennen könnten, würden sich nicht die Zeit nehmen, es herauszufinden, und diese Leute sind sowieso außerhalb Ihrer Zielgruppe.
Edit: Wenn es nicht offensichtlich war, sage ich, dass Sie jedem Haustier einen anderen Schlüssel geben (da die gleiche Lösung Ihr Problem nicht lösen würde). Wenn also die Pet-Variation (Petvar) eine 16-Bit-Zahl ist, generieren Sie eine 16-Bit-Zufallszahl (rnd), dann tun Sie dies: petvar = (petvar^rnd)<<16 | rnd;
und dann können Sie diese Operation umkehren, um die rnd und dann petvar ^ rnd zu extrahieren und dann einfach xor, um das ursprüngliche Petvar zu erhalten.
Sie suchen nach einer "einmaligen Auffüllung" Verschlüsselung. Es nimmt einen Schlüssel und fügt den Zeichen zusätzlich den Modulus hinzu, um die verschlüsselte Zeichenfolge zu erstellen.
%Vor%Das ist also eine einfache String-Verschlüsselung. Ich würde das Array der Parameter des Benutzers serialisieren und es als eine Variable in dem Link übergeben:
%Vor%In load_pet.php sollten Sie das Gegenteil tun:
%Vor%Bam.
Tags und Links php encryption