Xoder Verschlüsselung in PHP

8

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.

    
emersonthis 25.09.2011, 21:13
quelle

8 Antworten

4

Wie ich es gemacht habe, könnte jemandem helfen ...

%Vor%     
BananaAcid 24.01.2013 11:08
quelle
3

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:

    %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 'hello' width verschlüsselt, ist der Schlüssel '12312' .

Rusty Fausak 25.09.2011 21:49
quelle
1

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.

    
David Schwartz 25.09.2011 21:16
quelle
1

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%     
sll 25.09.2011 21:34
quelle
1

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.

    
cwallenpoole 25.09.2011 21:58
quelle
1
___ answer14499875 ___

Wie ich es gemacht habe, könnte jemandem helfen ...

%Vor%     
___ qstntxt ___

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.

    
___ answer7548681 ___

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.

    
___ qstnhdr ___ Xoder Verschlüsselung in PHP ___ answer7548861 ___

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% .

___ answer7548777 ___

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%     
___ tag123php ___ PHP ist eine weit verbreitete, dynamische, objektorientierte und interpretierte Skriptsprache, die primär für die serverseitige Webentwicklung entwickelt wurde. ___ tag123bitwiseoperators ___ Operatoren, die verwendet werden, um eine Manipulation auf Bit-Ebene durchzuführen. Die Programmiersprachen sind Byte-orientiert, während die Hardware bit-orientiert ist. Daher kann es sehr wichtig sein, auf Bit-Ebene zu arbeiten, insbesondere wenn das Programm direkt interagiert mit der Hardware. ___ antwort22382294 ___

Verwenden Sie diesen Code, es funktioniert perfekt

%Vor%     
___ answer7548867 ___
%Vor%

Hinweis: Es wird wahrscheinlich einige seltsame Charaktere erstellen ...

    
___ tag123xor ___ Für Fragen mit Exklusiv-Oder-Operationen (typischerweise bitweise). ___ answer7548905 ___

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.

    
___ tag123bitwisexor ___ Alles, was sich auf die bitweise XOR-Operation bezieht, d.h. eine binäre Operation, die an zwei ganzzahligen Operanden ausgeführt wird, deren Ergebnis erhalten wird, indem das logische XOR zwischen jedem Paar entsprechender Bits in den Operanden durchgeführt wird. ___ answer7548843 ___

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%     
___
user3415944 13.03.2014 14:48
quelle
0

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%     
Niet the Dark Absol 25.09.2011 21:45
quelle
0
%Vor%

Hinweis: Es wird wahrscheinlich einige seltsame Charaktere erstellen ...

    
Karoly Horvath 25.09.2011 21:51
quelle