Polynomdivision GF(2^M) mit VHDL

Gast #5120038
Lesenswert?

Moin,

ich versuche eine Polynomdivision für das ECDSA-Verfahren auf einem FPGA 
zu implementieren. Dabei habe ich für erste Tests die Implementierung 
von der folgenden Seite genommen:

http://arithmetic-circuits.org/finite-field/vhdl_codes.htm

Ich erhalte nun die folgenden Werte:
x = 00001101
y = 11001010
z = 10101010 ( x / y mod f with f=100011011 )

x = 00110100
y = 00101010
z = 10010011 ( x / y mod f with f=100011011)

Wenn ich nun die Probe z * y = x mache, so erhalte ich korrekte 
Ergebnisse. Die Werte scheinen also erstmal gültig zu sein. Wenn ich 
allerdings die Polynomdivision per Hand mache, komme ich auf andere 
Ergebnisse:

00001101 / 11001010 = 0 R 1101 mod 100011011 = 0
00110100 / 00101010 = 1 R 11110 mod 100011011 = 1

Zur Sicherheit habe ich noch eine zweite Implementierung über 
Multiplikation mit dem Inversen gemacht. Dabei erhalte ich die gleichen 
Ergebnisse wie bei der ersten Implementierung.

Kann mir jemand sagen, wo mein Denkfehler? Danke!

Grüße
Lenni
Gast #5120298
Lesenswert?

Bin nicht mehr ganz sicher, Studium zu lange her :-)

Du musst im Binären immer noch eine versteckte 1 vorne mitführen, glaube 
Ich.  Die wird nie hingeschrieben, muss aber hilfsweise bemüht werden. 
Sowas Ähnliches hatte ich kürzlich bei einem CRC-Thema: Die 
Polynomdivision im Binären ist irgendwie nicht ganz vergleichbar der im 
integer-Bereich.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren