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
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.