Vorwort: Ich habe schon lange keinen Blog mehr geschrieben. Ich fühle mich im vergangenen Jahr so beschäftigt und habe endlose Arbeit zu tun. Ich glaube, viele Büroangestellte werden sich so fühlen. Vor kurzem habe ich einen Kartenschreibvorgang bei NFC durchgeführt und muss ein Scheckbit berechnen. Im Allgemeinen werden die meisten Check -Bits durch den XOR -Betrieb der ersten Bytes erhalten.
Lassen Sie mich nun über die Szenarien sprechen, die ich benutze:
Schreiben Sie eine 16-Byte-Daten in die CPU-Karte (z. B. eine Verkehrskarte), und das letzte Byte ist der Verifizierungscode-die ersten fünfzehn Bytes xor.
Ich begann nach einigen Algorithmen zu suchen, die andere im Internet geschrieben haben, und stellte fest, dass das Berechnungsergebnis falsch war, oder das Schreiben zu kompliziert war, also schrieb ich selbst einen, was der Meinung war, dass es relativ einfach war. Jetzt werde ich es mit Ihnen teilen, ich hoffe, mit Ihnen zusammen zu kommunizieren.
Abschnitt 1: Was ist der XOR -Betrieb (hauptsächlich aus Baidu Encyclopedia, bekannte Kinderstiefel können übersprungen werden)
Definition:
Exklusiver Englisch ist exklusiver oder als XOR abgekürzt
Xor ist ein mathematischer Operator. Es wird auf logische Operationen angewendet. Das mathematische Symbol von XOR ist "" und das Computersymbol "Xor". Der Algorithmus lautet:
AB = (¬a∧b) ∨ (a∧-b)
Wenn die Werte A und B nicht gleich sind, beträgt das XOR -Ergebnis 1. Wenn die Werte A und B gleich sind, beträgt das XOR -Ergebnis 0.
Exklusiv oder wird auch eine Semi-Addition-Operation bezeichnet. Sein Algorithmus entspricht der binären Addition ohne Trage: In Binär wird 1 verwendet, um True zu repräsentieren, und 0 ist falsch, dann der Algorithmus der Exklusive oder IS: 00 = 0, 10 = 1, 01 = 1, 11 = 0 (beide sind beide 0, unterschiedlich 1). Diese Gesetze sind die gleichen wie die Addition, tragen jedoch nicht.
Xor wird als Xor, EOR und Ex-OR bezeichnet
Es gibt drei Arten von Betreibern im Programm: XOR, XOR und.
Wie man es benutzt, ist wie folgt
z = xy
z = xxory
Betriebsregeln:
1.aa = 0
2.Ab = ba
3.abc = a (bc) = (ab) c;
4.D = ABC kann a = dbc ableiten.
5.aba = b.
6. Wenn x die Binärzahl 0101 ist, ist y die Binärnummer 1011
Dann xy = 1110
Nur wenn die beiden Vergleichsbits unterschiedlich sind, ist das Ergebnis 1, andernfalls beträgt das Ergebnis 0
Das heißt: "Wenn zwei Eingaben gleich sind, sind sie 0 und wenn sie unterschiedlich sind, sind sie 1"!
Logik:
Logischer Ausdruck: f = ab'a'b ((ab
Die Wahrheitstabelle der XOR -Logik ist in Abbildung 1 dargestellt
Die logischen Symbole sind in Abbildung 2 dargestellt. Die Beziehung zwischen XOR -Logik lautet: Wenn AB unterschiedlich ist, Ausgabe p = 1; Wenn AB gleich ist, Ausgabe p = 0. "" ist ein XOR-Operationssymbol, und XOR-Logik ist auch eine Kombination mit oder nicht logisch, und sein logischer Ausdruck lautet:
P = ab
Aus Abbildung 1 sind die Regeln des XOR -Betriebs
00 = 0,01 = 1
10 = 1,11 = 0
Mentale Formel: 0 ist die gleiche, 1 ist dasselbe
Tatsächlich ist XOR in englischer Sprache als beide (IsOne) definiert, aber nicht both, das heißt, wenn nur einer wahr ist (1), nehmen Sie wahr (1).
Wirkung:
Es wird häufig in Computern verwendet. Das logische Symbol von XOR wird im Allgemeinen mit XOR verwendet, was ebenfalls nützlich ist:
Wahr oder falsch = wahr
False true = true
False = false
True = false
Oder:
TrueFalse = true
Falsetrue = true
Falsefalse = false
TrueTREE = Falsch
Einige Computersprachen verwenden 1, um True und 0 zu repräsentieren, um Falsch darzustellen, sodass die beiden Bytes bitweise exklusiv oder wie folgt sind
Im Folgenden finden Sie zwei Binärwerte für die XOR -Berechnung:
In Wirklichkeit werden Dezimalwerte verwendet. Schauen wir uns also an, wie zwei Dezimalwerte für XOR berechnet werden:
52 =?
1. Vor der Durchführung der XOR -Berechnung werden alle Werte in Binary umgewandelt:
5 und 2 werden in binäre: 0101 bzw. 0010 umgewandelt
2. Konvertieren Sie das Ergebnis 0111 in Dezimal: 7
3. so 52 = 7
Clevere Verwendung:
Im Gegensatz zu anderen Sprachen verwendet XOR in C und C ++ XOR nicht, sondern "^", und die Schreibmethode ist Verschiebung+6. (Und das "^" in anderen Sprachen bedeutet im Allgemeinen multiplizieren)
Wenn Sie die Werte zweier Variablen austauschen müssen, können Sie zusätzlich zu den häufig verwendeten geliehenen Zwischenvariablen für den Austausch auch XOR verwenden und nur zwei Variablen für den Austausch verwenden, z. B.:
a = a^b; b = b^a; a = a^b;
Detaillierte Erklärung:
a1 = a^bb = a1^ba = a1^b = a1^(a1^b) = a1^a1^b = b
Beachten:
a=a^b^(b=a);//此类形式是不正确的UB行为,在不同编译器中会有不同的结果,切勿使用
Dies vervollständigt den Austausch von A und b.
Zusammenfassend: Die gleiche Variable und eine andere Variable und sein XOR -Wert sind selbst gleich.
Anwendungsfall: Es kann in einem bestimmten Link oder mehr Links des Verschlüsselungsalgorithmus verwendet werden, wodurch der Algorithmus komplexer ist, weniger einfach zu knacken ist und eine höhere Sicherheit hat. [1]
Abschnitt 2: Implementierung in der Java -Sprache:
private statische String XOR (String strhex_x, String strhex_y) {// x und y in binäre Form String AnotherBinary = Integer. Binär, ansonsten wird die linke Null ergänzt, wenn (ein anderer binär.length ()! = 8) {für (int i = AnotherBinary.Length (); i <8; i ++) {AnotherBiny = "0"+ein anderes Binär;}} if (thisbinary.length ()! "0"+thisbinary;}} // XOR -Operation für (int i = 0; i <otherBinary.length (); i ++) {// Wenn die Anzahl derselben Position dieselbe ist, 0 hinzufügen, ansonsten add 1 if (thisbinary.charat (i) == AnotherBinary.charat (i)) Ergebnis+= "0"; else {result+= "1";}} log.e ("code", result); return integer.tohexString (Integer.ParseInt (Ergebnis, 2));}HINWEIS: Die obige Methode ist eine XOR-Operation zwischen einem Byte einer hexadezimalen Zeichenfolge, wie z.
1312F70F900168D900007DF57B4884
Teilen Sie zuerst: 13 12 F7 0F 90 01 68 D9 00 00 7d F5 7B 48 84
13 xor 12-> 1
1 XOR F7-> F6
F6 XOR 0F-> F9
....
62 XOR 84-> E6
Das heißt, der erhaltene Ein-Byte-Verifizierungscode ist: E6
Außerdem habe ich nur einigen Freunden eine einfache Anrufmethode hinzugefügt, nur als Referenz:
public String checkcode_0007 (String para) {String [] datearr = new String [15]; try {datearr [0] = para.Substring (0, 2); datearr [1] = para.Substring (2, 4); datearr [2] = para.Substring (4, 6); datearr [3] [3] [3] [3] [3] [3] [3] [3] [3] [3] [3]; Para.Substring (8, 10); DATEARR [5] = Para.Substring (10, 12); DATEARR [6] = para.Substring (12, 14); DATEARR [7] = para.Substring (14, 16); DATEARR [8] = Para.Substring (16, 18); datearr [9]; 20); datearr [10] = para.Substring (20, 22); datearr [11] = para.Substring (22, 24); DATEARR [12] = para.Substring (24, 26); datearr [13] = para.Substring (26, 28); DATEARR [14] = Para.Substring (28) (28) (28); Handle Exception} String code = ""; für (int i = 0; i <datearr.Length-1; i ++) {if (i == 0) {code = xorString (datearr [i], datearr [i+1]);} else {code = xorstring (code, datearr [i]);}}}} codeNennen Sie es dann in der Hauptfunktion oder einer anderen Methode:
String -Code = checkCode_0007 ("1312F70F900168D900007DF57B4884");Der Code ist der erhaltene Check -Code.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über die Implementierung der Java -Programmierung des Codebeispiels für exklusive oder Betrieb von hexadezimalen Zeichenfolgen. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!