Zbliża się egzamin, na którym będę mógł skorzystać z prostego kalkulatora. Na niektórych przykładowych pytaniach proszą nas o XOR dwie wartości (dla okrągłego klucza AES) i wiem, jak zapisać to ręcznie, ale czy istnieje inny szybszy sposób, ponieważ egzamin jest oczywiście określony w czasie.

Odpowiedź

Jeśli masz szczęście, definicja „prostego kalkulatora” może obejmować wszystkie nie graficzne kalkulatory. W takim przypadku możesz użyć Casio FX-115ES Plus, który zawiera szesnastkowe i ósemkowe tryby podstawowe i ma operator XOR. Może działać na grupach oktetów do 32 bitów.

Jeśli nie masz tyle szczęścia, tablica XOR jest twoim najlepszym przyjacielem. W zależności od tego, ile obliczeń musisz wykonać, może być znacznie szybsze utworzenie jednego na zdrapce podczas egzaminu. Możesz nawet mieć możliwość zabrania jednego ze sobą.

Tabela XOR 0

Wymagałem, aby tablica XOR mogła wykonywać szybkie obliczenia na drukowanej książce kodów dla silnej kryptograficznie komunikacji przez publiczny kanał głosowy. Trzeba było to również zrobić szybko, bez użycia komputera lub jakiegokolwiek urządzenia elektronicznego i zmieścić się na małym arkuszu 4×6 w przestrzeni pod szyfrogramem.

Wymyśliłem kilka metod, aby skondensować tabeli i nadal można go używać. Jeśli jesteś sprytny i zaradny, wiedza o tym, jak tworzyć skondensowane wersje, pozwoli ci bardzo szybko wykonać wiele obliczeń XOR. Istnieje rekurencyjny wzór w szesnastkowej tablicy XOR, który można wykorzystać. Powyższa tabela jest oznaczona kolorami, aby pokazać ten wzór, który rozciąga się na poszczególne znaki. Oto tabele skrócone:

XOR Tabela 1

Chociaż powyższa tabela zajmuje mniej miejsca, zawiera taką samą liczbę znaków, a zatem jej utworzenie zajmuje mniej więcej tyle samo czasu. Do wyboru właściwych znaków wymagana jest prosta reguła.

XOR Tabela 2

Następny poziom zajmuje teraz połowę mniej miejsca niż poprzedni, a także połowę znaków. Zasada jest bardziej złożona, ale kilka minut ćwiczeń sprawia, że korzystanie z niej jest prawie tak szybkie, jak pełny stół. Nawet regułę można uprościć za pomocą XOR, wynik będzie poprawny, jeśli XOR wyborów reguł wynosi 1.

Tabela 3 XOR

Ostatni poziom to znowu połowa spacji i połowa znaków (prawie) jak poprzednia, wymagająca dodatkowej reguły, aby wykonać zadanie. Jeśli pamiętasz strukturę rekurencyjną i podstawowy układ tej tabeli, możesz odtworzyć ją w mniej niż minutę za pomocą pióra i papieru.

Zacznij od nagłówka wewnętrznej kolumny, najpierw skub; 0 1 2 3 4 5 6 7
Następnie dodaj drugi kawałek, który jest pierwszym kawałkiem + 8; 8 9 ABCDEF
Zewnętrzny nagłówek kolumny to wewnętrzny nagłówek kolumny z odwróconymi połówkami
Wewnętrzny nagłówek wiersza to pierwsza połowa wewnętrznego nagłówka kolumny
Zewnętrzny nagłówek wiersza to pierwsza połowa zewnętrznego kolumny nagłówek
Następnie wypełniasz tabelę strukturą rekurencyjną, zbudowaną z wewnętrznego nagłówka kolumny.
Tworzenie podwójnie skompresowanej tabeli pomija zewnętrzne nagłówki, ale używa pełnego nagłówka wiersza.

Pojedynczy przykład w potrójnej tabeli:

25 XOR B6
2 XB = [2a] X [3b] (1 2 2) = 9
Ponieważ 2 to pierwszy półbajt, a B to drugi, używamy drugiego półbajtu z [19]
5 X 6 = [5d] x [ 6e] (1 1 1) = 3
Ponieważ 5 to pierwszy półbajt, a 6 to pierwszy, używamy pierwszego półbajtu z [3b]
Dlatego 25 XOR B6 = 93

Odpowiedź

Spróbuj przekonwertować liczby szesnastkowe na binarne i wykonaj wyłączne LUB na każdym bicie. Następnie przekonwertuj liczby binarne z powrotem na liczby szesnastkowe.

Komentarze

  • Ponadto, ponieważ 16 to dokładnie 2 ^ 4, możesz to zrobić cyfrowo. Oznacza to, że nie ' nie musisz od razu konwertować liczby całkowitej na dwójkową, możesz to zrobić po jednej cyfrze na raz, xor, a następnie przekonwertować wynik z powrotem na szesnastkowy

Odpowiedź

Zapisywanie 2 bitów jest łatwe.
Konwersja cyfry szesnastkowej na 4 bity jest łatwa.

Połączenie tych 2 faktów powinno ułatwić xorowanie pojedynczej cyfry szesnastkowej. Jeśli zapiszesz tabelę dla każdej cyfry do postaci binarnej (w teście czasowym, czy jest to tego warte, czy nie, zależy od liczby konwersji, które będziesz musiał wykonać), tak naprawdę nie będziesz musiał wykonywać żadnych pisemnych obliczeń. Na przykład dla xor e i 3 to 1110 xor 0011, czyli 1101, czyli d. Jeśli masz gotową tabelę, to obliczenie jest w zasadzie natychmiastowe.

Teraz po prostu powtórz to dla wszystkich cyfr. Można to zrobić cyfrowo, ponieważ każda cyfra szesnastkowa ma dokładnie 4 bity

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *