2012-04-23 15 views
5

Um Ich bin rostig in Bit-Operationen ehrlich zu sein.
Was mich interessiert, ist die XOR Operation. Nun, ich weiß, was es bitweise den Fall ist, und dass es bei der Verschlüsselung verwendet und dass wir ohne temporären Variable tun tauschen, aber ich war interessiert, wenn es spezifische Ansätze in Algorithmen, die XOR ‚s Eigenschaften passen.
Ich meine, ich bin interessiert in der Praxis von XOR in Algorithmen (beispiels wir es um das Finden einzigartiges Element unter Duplikate verwenden könnte). Gibt es ein Muster von Problemen (oder eine Formulierung eines Problems), dass man sehen könnte, dass die Verwendung von XOR der richtige Weg ist? (Gleiche Art und Weise wie es ein Muster, wenn binäre Suche verwenden?)
Gibt es eine Liste von praktischen Anwendungen von XOR auf Algorithmen, die auf den Kern-Algorithmus verwendet ist, es einfach nicht verwenden z.B. schnellere mathematische Operationen zu tun, wie wir begrüßen können >> statt durch 2 teilenWas in Algorithmen einige praktische Anwendungen von XOR sind

Jeder Eingang ist

+3

Nun, jeder andere Hash-Algorithmus (einschließlich nicht-kryptografischen) verwendet XOR an der einen oder anderen Stelle. Zählt das, oder ist es immer noch "nur ein bisschen fetzig"? – delnan

+0

Ich hüpfte etwas entlang der Linie des besten Wegs, um ein Problem zu lösen. Wie, wenn Sie unter Duplikate einzigartig zu finden versuchen Sie eine Hash-Tabelle verwenden könnte, aber es ohne zusätzlichen Platz mit 'XOR' tun können, da Duplikate – Cratylus

+5

abgebrochen werden aus ** Einer der wichtigsten Frage ons im Internet und es ist geschlossen .... ** –

Antwort

8

einige Beispiele, die in meinem Kopf kam:

Makeln Bits:

int i = 123; 
i ^= (1 << 4); // toggle bit 5 

Irgendeine Art von Zufälligkeit:

int i = 123; 
for (int k = 0; k < 100; k++) 
{ 
    i = i^(i << 1) + i; 
    System.out.println(i); 
} 

„Weak Verschlüsselung ":

int b = 235321; 
int key = 24552; 
int encrypted = b^key; 
int decrypted = encrypted^key; // equals 235321 
+0

Genau deshalb schrieb ich "schwach". –

+3

BTW, die letzte kann erweitert werden, um einfachen Text einfach zu verschlüsseln (Sie brauchen nur eine Codierung). Wenn * * ist der Schlüssel zufällig und solange der Eingang, es ist eigentlich eine [ziemlich gut Chiffre] (http://en.wikipedia.org/wiki/One-time_pad), dass es unmöglich ist zu knacken (zu wissen, weder Schlüssel noch Klartext). Wenn der Schlüssel kürzer ist (und so wiederholt wird, dass er der Länge des Inputs entspricht), kann er leicht geknackt werden (gut, einfach für einen Experten) - das einzige verbleibende Problem ist das Erstellen eines One-Time-Pads und das Erlangen von Bob. Kryptographie ist faszinierend. – delnan

Verwandte Themen