Linux PRNG
-
Hallo,
mit den Funktionen srandom(seed)/random wird der interne PRNG von Linux
angesprochen.
Ich weiß da nicht viel drüber, nur soviel, dass der verwendete PRNG nicht
für alle Zeiten festgeschrieben ist, und sich in anderen/kommenden
Linux-Distributionen ändern könnte, d.h. man erhält zu einem seed eine
andere Zufallszahlenreihenfolge.Mich interessiert, ob man den Quellcode zum internen Linux-PRNG irgenwo finden
kann und auf halbwegs überschaubare Weise in ein eigenes cpp-programm
einbinden kann, um so sicherzustellen, das man auch nach Distributionswechsel
auch weiterhin die gleichen Zufallszahlen zu einem seed erhält,
was wichtig ist für immer gleiches Programmverhalten.Alternative PRNG's wie Mersenne-Twister sind mir bekannt, aber ich
bevorzuge gerade den internen Linux-PRNG, da er gerade, warum auch immer,
die "sinnvollsten" Ergebnisse für mein Programm zu liefern scheint.
-
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=crypto/ansi_cprng.c
Denk dran, dass der Code unter GPL steht. Das Verwenden des PRNG von Linux über Sytsemaufrufe ist erlaubt, aber wenn du den Quelltext selbst in deine Software integrierst, musst du eine Lizenz wählen, die zur GPL v2 oder höher kompatibel ist.
Auch dynamisch linken ist nicht möglich (keine LGPL) mit einer nichtkompatiblen Lizenz.
-
danke, aber die Funktion srandom() bspw. finde ich
in der Datei nicht.
Hab auch schon die Kernel-Sourcen gegrept, auch dort finde
ich die Funktion nicht, lediglich in stdlib.h ist sie deklariert,
aber wo der Quellcode dafür ist, weiß ich nicht.
-
Tachs schrieb:
wenn du den Quelltext selbst in deine Software integrierst, musst du eine Lizenz wählen, die zur GPL v2 oder höher kompatibel ist.
GPLv2. Nicht oder höher.
-
tomax schrieb:
danke, aber die Funktion srandom() bspw. finde ich
in der Datei nicht.
Hab auch schon die Kernel-Sourcen gegrept, auch dort finde
ich die Funktion nicht, lediglich in stdlib.h ist sie deklariert,
aber wo der Quellcode dafür ist, weiß ich nicht.glibc
-
SG1 schrieb:
Tachs schrieb:
wenn du den Quelltext selbst in deine Software integrierst, musst du eine Lizenz wählen, die zur GPL v2 oder höher kompatibel ist.
GPLv2. Nicht oder höher.
8 * This program is free software; you can redistribute it and/or modify it 9 * under the terms of the GNU General Public License as published by the 10 * Free Software Foundation; either version 2 of the License, or (at your 11 * any later version.
Du kannst auf eine höhere Version "relizenzieren" und dann eine kompatible Lizenz wählen.
-
Tatsache. Hatte jetzt an den Kernel als ganzes gedacht. Sorry für den falschen Einwurf meinerseits.