Nein, einen Crashkurs "Polynome" werde ich nicht geben.
Dazu ist die Sache zu kompliziert, und es sind viele dicke Bücher darüber geschrieben worden.
Vielleicht findest Du im Netz von irgendeiner Uni - Fach Mathematik oder Informatik - etwas, was Dir zusagt.
Auch bei den Kryptologen und Nachrichtentechnikern könntest Du fündig werden.
Obwohl die Materie nicht trivial ist, gibt es, mit einem Schieberegister und einem oder mehreren XOR sehr einfach aufzubauende, Generatoren, die am Ausgang eine pseudozufällige Folge von Nullen und Einsen, die man auch als Maximum-Lenght-Sequences, MLS, bezeichnet, produzieren.
Wenn N die Zahl der Stufen im Schieberegister ist, wiederholt sich die Sequenz nach 2
N-1 Takten, das ist zugleich ihre Länge.
Mit einem softwaremäßig aus 3 Bytes aufgebauten 24-Bit Schieberegister wiederholt sich die Geschichte also erst nach 2
24-1 Takten. (dezimal 16777215 wenn mein Taschenrechner mich nicht behumpst hat)
Derart erzeugte PN-Sequenzen eignen sich nicht zur Verschlüsselung, weil sie viel zu einfach zu knacken sind, aber man kann sie hervoragend benutzen, um Frequenzgänge oder Reflexionsstellen in Leitungen zu erkennnen.
Generell gibt es Generatorpolynome für jedes N, aber es gibt nicht für jedes N-Generatoren die mit einem einzigen XOR auskommen.
Da ein XOR in der Software Zeit kostet, gebe ich Dir in der folgenden Kochbuchanleitung einige Generatoren an, die die Bytes optimal ausnutzen, aber mit einem einzigen XOR auskommen.
Nimm ein N-stufiges Schieberegister das nach links schiebt, und führe das linkeste (Bit N-1) Bit und ein weiteres der Tabelle entnommenes Bit, einem XOR zu.
Das Ergebnis des XOR schiebst Du beim Takt in das Bit0 hinein.
Wenn Dein Register länger ist (m*8 bit), ist das kein Beinbruch, die unbenutzen Bits fallen einfach am linken Ende heraus.
Einfach was ?
Für N=2 bis 4 kannst Du das sogar noch einem Blatt Papier nachvollziehen:
Code : |
Stufenzahl zu XOR-ende Bits:
N=2 1,0
N=3 2,1
N=4 3,2
|
|
Ernstzunehmende Sequenzen sind länger:
Code : |
Bytes Stufenzahl zu XOR-ende Bits:
1 7 6,5 oder 6,3
2 15 14,13 oder 14,10 oder 14,7
3 23 22,17 oder 22,13
4 31 30,27 oder 30,24 oder 30,23 oder 30,17
5 39 38,34
|
|
Bei einer Schiebefrequenz von 1MHz, die Du mit einem µP softwaremäßig natürlich nicht erreichst, wiederholt sich der 7-bit Generator nach 127µs, der 15-Bit Generator nach 32ms, der 23-Bit Generator nach 8,4 Sekunden, der 31-Bit Generator nach 36 Minuten, und der 39-Bit Generator nach über 6 Tagen.
Das sollte für die meisten praktischen Zwecke ausreichen.
Wenn Du mehr brauchst, sag Bescheid. Als ultimativen pseudo-Zufallsgenerator könnte ich Dir eine Sequenz anbieten, die sich erst nach 5,9*10
36 Jahren wiederholt.
Das wär etwa 10
27 mal länger als unser Sonnensystem alt ist. Selbst wenn du von 1MHz auf 10GHz Taktfrequenz gehst, ändert sich nicht viel, daraus wird dann nur das 4*10
22-fache Alter des Universums.
Trotzdem kann man damit nicht verschlüsseln, der Code wäre in wenigen Millisekunden geknackt.
Das Schieberegister muß nicht besonders initialisiert werden, nur dürfen Anfangs nicht alle Stufen auf 0 stehen.
Ach ja, Du brauchst ja nur acht Bit. Dann greif Dir einfach irgendein Byte des Generators ab.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
[ Diese Nachricht wurde geändert von: perl am 5 Jul 2003 22:01 ]