Verwenden Sie diesen Code, es funktioniert perfekt
%Vor%Ich bin neu in Xor-Verschlüsselung, und ich habe einige Probleme mit dem folgenden Code:
%Vor%Wenn ich das ausführe, funktioniert es für normale Strings, wie 'Hund', aber es funktioniert nur teilweise für Strings mit Zahlen wie '12345'.
Um zu demonstrieren ...
xor_this('dog')
= 'UYV'
xor_this('123')
= ''
Es ist auch interessant zu bemerken, dass xor_this( xor_this('123') )
= '123', wie ich es erwarte. Ich bin mir ziemlich sicher, dass das Problem irgendwo in meinem wackeligen Verständnis von bitweisen Operatoren liegt, ODER möglicherweise in der Art und Weise, wie PHP Strings behandelt, die Zahlen enthalten. Ich wette, da draußen ist jemand clever, der genau weiß, was hier falsch ist. Danke.
EDIT # 1: Es ist nicht wirklich "Verschlüsselung". Ich denke, Verschleierung ist der richtige Ausdruck, was ich tue. Ich muss einen Code übergeben, der unwichtige Daten von einem Benutzer enthält, ohne dass er leicht manipuliert werden kann. Sie absolvieren eine zeitgesteuerte Aktivität offline und übermitteln ihre Zeit über diesen Code an eine Online-Anzeigetafel. Die Offline-Aktivität verschleiert ihre Zeit (in Millisekunden). Ich muss ein Skript schreiben, um diesen Code zu erhalten und ihn wieder in die Zeichenfolge umzuwandeln, die ihre Zeit enthält.
Ich denke, dass Sie hier ein paar Probleme haben könnten, ich habe versucht zu skizzieren, wie ich denke, dass Sie es beheben können:
Sie müssen ord(..)
verwenden, um den ASCII-Wert eines Zeichens zu erhalten Sie können es im Binärformat darstellen. Versuchen Sie beispielsweise Folgendes:
Ich bin mir nicht sicher, wie Sie eine XOR-Chiffre mit einem Multi-Byte-Schlüssel, wie die Wikipedia-Seite auf XOR-Chiffre spezifiziert nicht. Aber ich gehe davon aus, dass für einen bestimmten Schlüssel wie "123" der Schlüssel "linksbündig" beginnt und sich auf die Länge des Textes ausdehnt:
%Vor% Was 'hello'
width verschlüsselt, ist der Schlüssel '12312'
.
Es gibt keine Garantie, dass das Ergebnis der XOR-Operation ein druckbares Zeichen erzeugt. Wenn Sie uns eine bessere Vorstellung von dem Grund geben, warum Sie das tun, können wir Ihnen wahrscheinlich stattdessen etwas Sinnvolles zeigen.
Ich glaube, dass Sie eher mit Konsolenausgaben und Codierungsproblemen als mit XOR konfrontiert sind. Versuchen Sie, die Ergebnisse der XOR-Funktion in einer Textdatei auszugeben, und sehen Sie sich eine Reihe generierter Zeichen an. Ich glaube, HEX-Editor wäre die beste Wahl, um einen generierten Zeichensatz zu beobachten und zu vergleichen.
Um den Text zurückzusetzen (gerade Zahlen sind enthalten), können Sie dieselbe Funktion verwenden:
%Vor% Aufgrund der Tatsache, dass Sie xor_this( xor_this('123') ) = '123'
erhalten, bin ich bereit zu erraten, dass dies nur ein Ausgabeproblem ist. Sie senden Daten an den Browser, der Browser erkennt sie als etwas, das in HTML gerendert werden soll (etwa das erste halbe Dutzend ASCII-Zeichen). Schau dir die Seitenquelle an, um zu sehen, was wirklich da ist. Besser noch, iteriere durch die Ausgabe und gebe das ord
des Wertes an jeder Position wieder.
Wie ich es gemacht habe, könnte jemandem helfen ...
%Vor%Ich bin neu in Xor-Verschlüsselung, und ich habe einige Probleme mit dem folgenden Code:
%Vor%Wenn ich das ausführe, funktioniert es für normale Strings, wie 'Hund', aber es funktioniert nur teilweise für Strings mit Zahlen wie '12345'.
Um zu demonstrieren ...
%code% = 'UYV'
%code% = ''
Es ist auch interessant zu bemerken, dass %code% = '123', wie ich es erwarte. Ich bin mir ziemlich sicher, dass das Problem irgendwo in meinem wackeligen Verständnis von bitweisen Operatoren liegt, ODER möglicherweise in der Art und Weise, wie PHP Strings behandelt, die Zahlen enthalten. Ich wette, da draußen ist jemand clever, der genau weiß, was hier falsch ist. Danke.
EDIT # 1: Es ist nicht wirklich "Verschlüsselung". Ich denke, Verschleierung ist der richtige Ausdruck, was ich tue. Ich muss einen Code übergeben, der unwichtige Daten von einem Benutzer enthält, ohne dass er leicht manipuliert werden kann. Sie absolvieren eine zeitgesteuerte Aktivität offline und übermitteln ihre Zeit über diesen Code an eine Online-Anzeigetafel. Die Offline-Aktivität verschleiert ihre Zeit (in Millisekunden). Ich muss ein Skript schreiben, um diesen Code zu erhalten und ihn wieder in die Zeichenfolge umzuwandeln, die ihre Zeit enthält.
Es gibt keine Garantie, dass das Ergebnis der XOR-Operation ein druckbares Zeichen erzeugt. Wenn Sie uns eine bessere Vorstellung von dem Grund geben, warum Sie das tun, können wir Ihnen wahrscheinlich stattdessen etwas Sinnvolles zeigen.
Ich denke, dass Sie hier ein paar Probleme haben könnten, ich habe versucht zu skizzieren, wie ich denke, dass Sie es beheben können:
Sie müssen %code% verwenden, um den ASCII-Wert eines Zeichens zu erhalten Sie können es im Binärformat darstellen. Versuchen Sie beispielsweise Folgendes:
%Vor%Ich bin mir nicht sicher, wie Sie eine XOR-Chiffre mit einem Multi-Byte-Schlüssel, wie die Wikipedia-Seite auf XOR-Chiffre spezifiziert nicht. Aber ich gehe davon aus, dass für einen bestimmten Schlüssel wie "123" der Schlüssel "linksbündig" beginnt und sich auf die Länge des Textes ausdehnt:
%Vor%Was %code% width verschlüsselt, ist der Schlüssel %code% .
Ich glaube, dass Sie eher mit Konsolenausgaben und Codierungsproblemen als mit XOR konfrontiert sind. Versuchen Sie, die Ergebnisse der XOR-Funktion in einer Textdatei auszugeben, und sehen Sie sich eine Reihe generierter Zeichen an. Ich glaube, HEX-Editor wäre die beste Wahl, um einen generierten Zeichensatz zu beobachten und zu vergleichen.
Um den Text zurückzusetzen (gerade Zahlen sind enthalten), können Sie dieselbe Funktion verwenden:
%Vor%Verwenden Sie diesen Code, es funktioniert perfekt
%Vor%Hinweis: Es wird wahrscheinlich einige seltsame Charaktere erstellen ...
Aufgrund der Tatsache, dass Sie %code% erhalten, bin ich bereit zu erraten, dass dies nur ein Ausgabeproblem ist. Sie senden Daten an den Browser, der Browser erkennt sie als etwas, das in HTML gerendert werden soll (etwa das erste halbe Dutzend ASCII-Zeichen). Schau dir die Seitenquelle an, um zu sehen, was wirklich da ist. Besser noch, iteriere durch die Ausgabe und gebe das %code% des Wertes an jeder Position wieder.
Versuchen Sie Folgendes:
%Vor%Wenn einer der beiden Operanden eine Ganzzahl ist, dann wandelt PHP den anderen in eine Ganzzahl und XORs sie für ein numerisches Ergebnis.
Alternativ können Sie Folgendes verwenden:
%Vor%Versuchen Sie Folgendes:
%Vor%Wenn einer der beiden Operanden eine Ganzzahl ist, dann wandelt PHP den anderen in eine Ganzzahl und XORs sie für ein numerisches Ergebnis.
Alternativ können Sie Folgendes verwenden:
%Vor%Hinweis: Es wird wahrscheinlich einige seltsame Charaktere erstellen ...
Tags und Links php bitwise-operators xor bitwise-xor