Die Logische verknüpfung XNOR/ENOR wird gerne für Kryptische zwecke eingesetzt. Es ist eine einfache Art die Daten etwas zu verschlüsseln. Schnell obendrein!
| 0 | 1 | |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
In obriger Wahrheitstabelle läßt sich die Funktion des XNOR erkennen. Nur wenn beide Eingänge gleich sind wird eine 1 erzeugt.
C Source
void xnor()
{
int a = 12;
int b = 23;
int c = 0;
c = a^b;
}
Compiler Ergenisss
int a = 12;
move.l #$C,-4(a5)
int b = 23;
move.l #$17,-$8(a5)
int c = 0;
clr.l -$C(a5)
c=(a^b);
move.l -4(a5),d0
move.l -$8(a5),d1
eor.l d1,d0
move.l d0,-$10(a5)
move.l -$10(a5),-$C(a5)
unlk a5
; Direkt Programmiert
move.l #22,d0 ; b
move.l #12,d1 ; a
eor.l d1,d0 ; C = A XNOR B
Wie bereits erwähnt wird das XNOR gerne für Kodierungen verwendet. Zum Kodieren mit XNOR wird noch ein Schlüssel benötigt. Wir brauchen immer 2 Bits die wir verknüpfen können.
Als sicher kann das Verfahren nur angesehen werden, wenn der Schlüssel sich nicht wiederholt, also mindestens genauso lang ist wie der zu kodierende Teil. Da dies in der Praxis aber weniger auftritt, sind viele Routinen in der Lage, den Schlüssel einfach wieder von vorne zu verwenden und weiter zu verschlüsseln. Es tritt dann eine Blockverschlüsslung auf.
Mit einer reinen XNOR Verknüpfung kann ein und die selbe Routine verwendet werden um zu kodieren und dekodieren.
XNOR Routine (Zum Download Schift-Taste gedrückt halten)
XNOR Routine (M68K Assembler) (Zum Download Schift-Taste gedrückt halten)
Vielen Dank an Arne.Seifert@infineon.com der mich am 2.Juli 2001 darauf aufmerksam machte das ich xor anstatt xnor geschrieben hatte. An dieser stelle vielen Dank!