Ik heb een aankomend examen waarin ik een eenvoudige rekenmachine kan gebruiken. Bij sommige voorbeeldvragen stellen ze ons twee XOR-waarden (voor AES-ronde sleutel) en ik weet hoe ik het met de hand moet opschrijven, maar er is een andere snellere manier omdat het examen natuurlijk getimed is.
Antwoord
Als je geluk hebt, kan de definitie van “eenvoudige rekenmachine” alle niet-grafische rekenmachines omvatten. In dat geval kunt u een Casio FX-115ES Plus gebruiken, die hexadecimale en octale basismodi bevat, en een XOR-operator heeft. Het kan werken op groepen van octetten tot 32 bits.
Als je niet zoveel geluk hebt, is de XOR-tafel je beste vriend. Afhankelijk van het aantal berekeningen dat u moet uitvoeren, kan het heel goed sneller zijn om er een te maken op een kladblad tijdens het examen. Mogelijk mag u er zelfs een meenemen.
Ik had een vereiste voor een XOR-tabel om snelle berekeningen uit te voeren op een gedrukt codeboek voor cryptografisch sterke communicatie via een openbaar spraakkanaal. Het moest ook snel gebeuren zonder het gebruik van een computer of enig ander elektronisch apparaat, en moest op een klein blad van 4×6 in de ruimte onder de cijfertekst passen.
Ik bedacht verschillende methoden om de tafel en heb het nog steeds bruikbaar. Als u slim en vindingrijk bent, kan de kennis van het maken van de verkorte versies u in staat stellen om zeer snel veel XOR-berekeningen uit te voeren. Er is een recursief patroon in de hexadecimale XOR-tabel dat kan worden benut, de bovenstaande tabel heeft een kleurcode om dit patroon weer te geven, dat zich uitstrekt tot aan de afzonderlijke tekens. Hier zijn de beknopte tabellen:
Hoewel de bovenstaande tabel minder ruimte in beslag neemt, heeft deze hetzelfde aantal tekens en kost het dus ongeveer evenveel tijd om te creëren. Er is een eenvoudige regel nodig om de juiste tekens te selecteren.
Het volgende niveau neemt nu zowel de helft van de ruimte van het vorige als de helft van de karakters in beslag. De regel is complexer, maar een paar minuten oefenen maakt het bijna net zo snel in gebruik als de volledige tabel. Zelfs de regel kan worden vereenvoudigd met XOR, het resultaat is correct als de XOR van de regelselecties 1 is.
Het laatste niveau is wederom de helft van de spatie en de helft van de karakters (bijna) als het vorige, terwijl een extra regel nodig is om de klus te klaren. Als u zich de recursieve structuur en de basislay-out van deze tabel herinnert, kunt u deze in minder dan een minuut opnieuw maken met pen en papier.
Begin met de binnenste kolomkop, eerst knabbelen; 0 1 2 3 4 5 6 7
Voeg dan de 2e nibble toe, dat is de eerste nibble + 8; 8 9 ABCDEF
De buitenste kolomkop is de binnenste kolomkop met de helften omgedraaid
De binnenste rijkop is de eerste helft van de binnenste kolomkop
De buitenste rijkop is de eerste helft van de buitenste kolom header
Vervolgens vul je de tabel in met de recursieve structuur, opgebouwd uit de binnenste kolomkop.
Bij het maken van de dubbel gecomprimeerde tabel worden de buitenste kopteksten weggelaten, maar wordt een volledige rijkop gebruikt.
Een enkel voorbeeld van de drievoudige tabel:
25 XOR B6
2 XB = [2a] X [3b] (1 2 2) = 9
Omdat 2 de 1e nibble is en B de 2e, gebruiken we de 2e nibble van [19]
5 X 6 = [5d] x [ 6e] (1 1 1) = 3
Omdat 5 de 1e nibble is en 6 de 1e, gebruiken we de 1e nibble van [3b]
Daarom 25 XOR B6 = 93
Answer
Converteer hexadecimale getallen naar binaire getallen en voer exclusieve ORs uit op elke bit. Converteer vervolgens de binaire getallen terug naar hexadecimale getallen.
Reacties
- Bovendien, aangezien 16 precies 2 ^ 4 is, kun je dit digitaal doen. Dat wil zeggen, je hoeft ' t niet het hele getal in één keer naar binair te converteren, je kunt het cijfer voor cijfer doen, xor, en vervolgens het resultaat terug converteren naar hex
Answer
2 bits xoring is eenvoudig.
Het omzetten van een hexadecimaal cijfer naar 4 bits is eenvoudig.
De combinatie van deze 2 feiten zou het xoren van een enkel hexadecimaal cijfer vrij eenvoudig moeten maken. Als je een tabel voor elk cijfer naar binair getal opschrijft (in een getimede test, of dit de moeite waard is, hangt af van het aantal conversies dat je moet doen), dan hoef je eigenlijk geen geschreven berekening uit te voeren. Bijvoorbeeld voor xor e en 3, is 1110 x of 0011 wat 1101 is wat d is. Als je een tabel bij de hand hebt, is deze berekening in principe direct.
Herhaal dit nu voor alle cijfers. Dit kan cijfergewijs worden gedaan aangezien elk hexadecimaal cijfer precies 4 bits vertegenwoordigt