Ich implementiere einen kryptografischen Algorithmus in C, der einen 80-Bit-Schlüssel enthält. Eine bestimmte Operation beinhaltet ein Drehen, um den Schlüssel x Anzahl der Bits zu verschieben.
Ich habe den langen Doppeltyp ausprobiert, der, wenn ich nicht falsch bin, 80bits ist, aber das funktioniert nicht mit dem Bitshift-Operator.
Die einzige Alternative, die ich finden kann, besteht darin, ein 10-Element-Char-Array mit einer komplizierten Schleife und einem If-Else zu verwenden.
Meine Frage ist, ob es eine einfache und effiziente Möglichkeit gibt, dies auszuführen.
Danke.
Da ist etwas, das hier etwas durcheinander ist. Wenn ich Sie richtig verstehe, verwenden Sie eine "weiche" CPU auf dem FPGA.
Traditionell verwendet man den FPGA, um mit VHDL / Verilog eigene Schieberegister zu erstellen. Diese Art von Algorithmen ist ziemlich einfach zu implementieren und sehr schnell. Zurück an der Universität habe ich das für ein Kryptographie-Projekt gemacht.
Darüber hinaus spricht das erwähnte Papier von einem 128-Bit-Schlüssel. Dies wäre wesentlich einfacher zu implementieren?
Leider brauchst du eine Bignum-Bibliothek. Während native C-Datentypen Unterstützung für 80-Bit-Gleitkommazahlen haben, tut es nicht wirklich, was Sie wollen.
Es ist möglich, etwas wie GMP zu verlinken oder sogar weniger wünschenswerte Ansätze wie 10 Zeichen Array oder zwei lange und kurze Zahlen (64bit) zu verwenden und 16bit Ganzzahlen).
Weder ist besonders hübsch, aber sie funktionieren und wenn Sie planen, dies für alles außer einer Klasse zu verwenden, GMP ist der Weg zu gehen. Sonst könnte es am Ende zu einem ganzen Durcheinander von Timing-Attacken kommen, die man herumcodieren könnte, aber es könnte wirklich böse werden, sehr schnell.
Tags und Links c cryptography fpga rotation bit-shift